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 utilizando vnet.
  • 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


Tal vez pueda interesarte


Compartí este artículo