Esta pagina se ve mejor con JavaScript habilitado

Versiones de FreeBSD

 ·  🎃 kr0m

A veces resulta complicado saber que versión de FreeBSD debemos elegir, en este artículo aprenderemos de forma sencilla que características tiene cada versión y en que casos debemos decidirnos por una u otra.

Podemos encontrar toda la documentación en la web de FreeBSD pero dejo aquí un pequeño resumen como referencia.

FreeBSD tiene dos ramas de desarrollo FreeBSD-CURRENT y FreeBSD-STABLE además de dos estables FreeBSD-RELEASE Production y FreeBSD-RELEASE Legacy.
Debemos tener en cuenta que estas ramas SOLO afectan a las core tools y el kernel del SO, no al resto de aplicaciones que podamos instalar posteriormente desde binarios o el sistema de ports.


CURRENT:

FreeBSD-CURRENT es la rama de desarrollo donde se prueban funcionalidades experimentales y software en fase beta.
Solo debe ser utilizada por desarrolladores del SO o por desarrolladores que se dedican a testear de forma activa el software.

STABLE:

FreeBSD-STABLE es la rama de desarrollo desde la que salen las RELEASEs.
Todavía es un rama de desarrollo NO apta para el usuario final, simplemente la han pulido un poco mas que CURRENT.

Los snapshots son pequeños parches con bugfixes que se aplican sobre las versiones CURRENT y STABLE antes de liberar la versión definitiva de esas ramas del SO.

FreeBSD-RELEASE Production:

Production release es considerada estable con versiones de las core tools y kernel relativamente modernas.

FreeBSD-RELEASE Legacy:

Legacy release también es estable pero mas conservadora que la Production release en cuanto a las versiones de las core tools y kernel.

Podemos ver el soporte de cada una de ellas aquí .

* Production Release: 12.0 June 30, 2020 (TBD)
* Legacy Release: 11.2 September 30, 2021

En cuanto al resto del software que no forma parte del CORE del sistema tenemos dos opciones, paquete binarios o sistema de ports, en los dos casos podemos optar por distintas versiones de software:

  • Quarterly: Son versiones muy probadas y testadas en las que se actualizan los fallos de seguridad y los bugs. Se llama quaterly porque se generan a partir de la rama HEAD del repositorio cada 3 meses: Enero/Abril/Julio/Octubre, y son nombradas según el año y el cuarto del año en el que se generaron: YYYY-(Q1-4).
  • Latest(HEAD): Son las últimas versiones de software disponibles.

Como ya hemos dicho se puede elegir entre quaterly o latest tanto si utilizamos paquetes binarios como si utilizamos ports pero debemos tener en cuenta que si vamos a mezclar paquetes binarios con ports habrá que configurar los dos sistemas del mismo modo para evitar problemas de compatibilidad entre librerías y demás.

A continuación se indica como configurar los dos sistemas en Quarterly y Latest.

Paquetes binarios:

Por defecto el sistema ya viene configurado para utilizar los repositorios Quaterly:

cat /etc/pkg/FreeBSD.conf

FreeBSD: {
  url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly",
  mirror_type: "srv",
  signature_type: "fingerprints",
  fingerprints: "/usr/share/keys/pkg",
  enabled: yes
}

Para pasar a Latest:

mkdir -p /usr/local/etc/pkg/repos
cp /etc/pkg/FreeBSD.conf /usr/local/etc/pkg/repos/FreeBSD.conf

Editamos el fichero /usr/local/etc/pkg/repos/FreeBSD.conf

vi /usr/local/etc/pkg/repos/FreeBSD.conf

FreeBSD: {
  url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",
  mirror_type: "srv",
  signature_type: "fingerprints",
  fingerprints: "/usr/share/keys/pkg",
  enabled: yes
}

Actualizamos los indices de pkg a la versión Latest:

pkg update -f

Sistema de ports:

Lo primero que debemos saber es que la herramienta portsnap solo permite utilizar la rama HEAD, por este motivo vamos a utilizar Git ya que nos permitirá utilizar tanto HEAD como Quaterly.

Compilamos Git:

cd /usr/ports/devel/git
make install clean

Clonamos la rama principal que es HEAD:

Si queremos clonar una quaterly tan solo debemos indicarlo:

git clone https://git.FreeBSD.org/ports.git -b 2020Q3 /usr/ports

Podemos ver las releases:

git -C /usr/ports branch --list -r

  ...
  origin/2023Q2
  origin/2023Q3
  origin/HEAD -> origin/main
  origin/main

Nos aseguramos de que estamos en la correcta:

git -C /usr/ports rev-parse --abbrev-ref HEAD

main

Podemos cambiar con el comando switch:

git -C /usr/ports switch 2023Q3
git -C /usr/ports rev-parse --abbrev-ref HEAD

2023Q3

Si queremos volver a HEAD que es main:

git -C /usr/ports switch main
git -C /usr/ports rev-parse --abbrev-ref HEAD

main

Cada vez que deseemos actualizar el repositorio ejecutaremos el siguiente comando:

git -C /usr/ports pull


Hay que tener en cuenta que se puede hacer cualquier combinación de versión de SO y sistema de paquetes, por ejemplo puedo optar por tener un sistema base super estable con RELEASE-Legacy pero software mas moderno compilando desde ports utilizando la rama latest.

Si te ha gustado el artículo puedes invitarme a un RedBull aquí