Esta semana fue liberada la RELEASE versión 12.0 de FreeBSD, con lo cual procedí a actualizar mi estación de trabajo y alguno de nuestros servidores. Este artículo documenta el procedimiento de migración desde la versión 11.2-RELEASE. Procedimiento similar a cada una de las actualizaciones anteriores.
Entre las mejoras incluidas en esta versión se destacan:
- Se actualizó OpenSSL a la versión 1.1.1a (LTS); Unbound a la versión 1.8.1; y OpenSSH a 7.8p1.
- Se actualizaron Clang, LLVM, LLD, LLDB, compiler-rt y libc++ a la versión 6.0.1.
- Se actualizó el controlador de terminales virtuales
vt
con varias mejoras de rendimiento. - Se agregó el controlador
netdump
, el cual permite transmitir crash dumps a un host remoto luego de un system panic. - Mejoras en el soporte gráfico para el hardware contemporáneo.
- El firewall
pf
ahora se puede utilizar dentro de un jail utilizandovnet
. - Y se ha actualizado KDE a la versión... (sonido de redoblantes) 5.12.5!!! Es un gran salto desde la versión (actualmente instalada) 4.14.38.
- Además se modificaron muchas configuraciones por defecto y actualizaron aplicaciones de nivel usuario con el objetivo de mejorar la seguridad e incorporar nuevas funcionalidades. Revisar el detalle completo en las release notes.
Como en anteriores oportunidades, se procede con el upgrade de versión utilizando la herramienta freebsd-update
, la cual soporta actualizaciones desde versiones previas de FreeBSD para las plataformas i386 y amd64. Para actualizar desde FreeBSD 11.2-RELEASE, ejecutar los siguientes pasos.
Actualizar el sistema a la última versión actual disponible:
# freebsd-update fetch # freebsd-update install
A continuación, actualizar a 12.0-RELEASE:
# freebsd-update upgrade -r 12.0-RELEASE # freebsd-update install
Durante este proceso, freebsd-update
puede requerir intervención manual para hacer el merge de archivos de configuración del sistema que hayamos modificado.
Al finalizar, reiniciar el sistema para continuar con el nuevo kernel instalado antes de actualizar el resto de los componentes:
# shutdown -r now
Luego de reiniciar, ejecutar freebsd-update install
nuevamente, a fin de instalar los nuevos componentes del espacio usuario:
# freebsd-update install
Al finalizar este punto es necesario reconstruir todas las aplicaciones de terceros provistas por ports y paquetes, ya que se han actualizado las librerías del sistema. Es recomendable actualizar desde paquete en lugar de compilar ports, ya que se puede involucrar una gran cantidad de paquetes (prácticamente todos los paquetes instalados debido al cambio de ABI). Al mismo tiempo será necesario contar con suficiente espacio en disco para descargar, extraer e instalar la nueva base de paquetes:
root@hal9000:/usr/home/emi # pkg update && pkg upgrade pkg: Warning: Major OS version upgrade detected. Running "pkg-static install -f pkg" recommended Updating FreeBSD repository catalogue... pkg: Repository FreeBSD has a wrong packagesite, need to re-create database Fetching meta.txz: 100% 944 B 0.9kB/s 00:01 Fetching packagesite.txz: 100% 6 MiB 737.2kB/s 00:09 Processing entries: 100% FreeBSD repository update completed. 32180 packages processed. All repositories are up to date. pkg: Warning: Major OS version upgrade detected. Running "pkg-static install -f pkg" recommended Updating FreeBSD repository catalogue... FreeBSD repository is up to date. All repositories are up to date. Checking for upgrades (1064 candidates): 100% Processing candidates (1064 candidates): 100% The following 1067 package(s) will be affected (of 0 checked): New packages to be INSTALLED: gcc8: 8.2.0_4 emby-server: 3.5.3.0 samba48: 4.8.7 libzvbi: 0.2.35_3 libunicode: 0.4_11 Installed packages to be UPGRADED: xterm: 337 -> 340 xapian-core: 1.4.9,1 -> 1.4.9_1,1 x265: 2.8_1 -> 2.8_2 x264: 0.155.2917_4 -> 0.155.2917_5 wx30-gtk2: 3.0.4_3 -> 3.0.4_4 woff2: 1.0.2_2 -> 1.0.2_3 wireshark: 2.6.4 -> 2.6.5_2 wget: 1.19.5_1 -> 1.20 webp: 1.0.1 -> 1.0.1_1 webkit2-gtk3: 2.22.4 -> 2.22.5 [...] Installed packages to be REINSTALLED: pkg-1.10.5_5 (ABI changed: 'freebsd:11:x86:64' -> 'freebsd:12:x86:64') zziplib-0.13.69_1 (ABI changed: 'freebsd:11:x86:64' -> 'freebsd:12:x86:64') zip-3.0_1 (ABI changed: 'freebsd:11:x86:64' -> 'freebsd:12:x86:64') yasm-1.3.0 (ABI changed: 'freebsd:11:x86:64' -> 'freebsd:12:x86:64') yajl-2.1.0 (ABI changed: 'freebsd:11:x86:64' -> 'freebsd:12:x86:64') xwud-1.0.5 (ABI changed: 'freebsd:11:x86:64' -> 'freebsd:12:x86:64') xwininfo-1.1.4_2 (ABI changed: 'freebsd:11:x86:64' -> 'freebsd:12:x86:64') [...]
Tal como se puede apreciar, se instalan/actualizan un total de 1067 paquetes en mi estación de trabajo. Al mismo tiempo se observa que algunos son actualizaciones, pero la mayoría son reinstalaciones debido al cambio de ABI (Application Binary Interface). En definitiva misma versión pero compilada para que funcione con el nuevo kernel.
Luego de un (largo) rato, finaliza la descarga y actualización de paquetes y se procede con un nuevo reinicio:
# reboot
Inmediatamente luego de reiniciar es recomendable hacer una limpieza de dependencias que ya no son utilizadas, y de archivos para liberar espacio en disco:
# pkg autoremove # pkg clean
A continuación, actualizar el árbol de ports:
# portsnap fetch extract
Opcionalmente es posible actualizar a versiones más recientes disponibles en los ports ejecutando portmaster -aD
. sin embargo esto involucra la compilación de paquetes, lo cual llevará un tiempo importante. En mi caso preferí quedarme con las versiones binarias provistas por pkg
. Cabe destacar que si hemos instalado manualmente determinados ports no disponibles desde paquete (por cuestiones de licencia, por ejemplo) será necesario recompilarlos ahora.
En mi caso tuve la necesidad de recompilar los siguientes ports:
# portmaster --force-config emulators/virtualbox-ose sysutils/fusefs-exfat
Si en algún momento portmaster
o pkg
fallan indicando que cierto paquete está bloqueado y no se puede remover:
Checking integrity... done (0 conflicting) The following package(s) are locked and may not be removed: virtualbox-ose-kmod 1 packages requested for removal: 1 locked, 0 missing
Simplemente desbloquear el paquete en cuestión y continuar:
# pkg unlock virtualbox-ose-kmod
Finalmente hacer una limpieza de archivos y paquetes:
# portmaster -y --clean-distfiles # portmaster -y --clean-packages
Luego de haber actualizado todo el software de terceros (paquetes y ports), es necesario ejecutar freebsd-update
por tercera vez para que borre las viejas librerías de sistema que ya no serán utilizadas:
# freebsd-update install
Finalmente, reiniciar y disfrutar la nueva versión:
# shutdown -r now
En el caso de los sistemas de escritorio con KDE, el siguiente paso consiste en migrar a KDE Plasma 5.
Referencias
- FreeBSD 12.0-RELEASE Announcement
- FreeBSD 12.0-RELEASE Release Notes
- FreeBSD 12.0-RELEASE Installation Instructions - Upgrading FreeBSD