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:
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:
cp /etc/pkg/FreeBSD.conf /usr/local/etc/pkg/repos/FreeBSD.conf
Editamos el fichero /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:
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:
make install clean
Clonamos la rama principal que es HEAD:
Si queremos clonar una quaterly tan solo debemos indicarlo:
Podemos ver las releases:
...
origin/2023Q2
origin/2023Q3
origin/HEAD -> origin/main
origin/main
Nos aseguramos de que estamos en la correcta:
main
Podemos cambiar con el comando switch:
git -C /usr/ports rev-parse --abbrev-ref HEAD
2023Q3
Si queremos volver a HEAD que es main:
git -C /usr/ports rev-parse --abbrev-ref HEAD
main
Cada vez que deseemos actualizar el repositorio ejecutaremos el siguiente comando:
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.