Actualizar Debian 11 a Debian 12 (bookworm)
Actualizar Debian 11 a Debian 12 no suele ser complicado si ya tienes una instalación de Debian 11 limpia y totalmente dominada. En esta nota (que yo mismo consulto) vamos a ver las principales etapas de la migración.
Todas las órdenes se lanzan como root, a través de la consola KVM del servidor o por SSH. Nada de sudo inútil, ponte root.
1. ¿Qué novedades de Debian 12 conviene conocer para un VPS?
Sección titulada «1. ¿Qué novedades de Debian 12 conviene conocer para un VPS?»Aquí tienes la lista de los paquetes importantes para un VPS que se actualizarán si están instalados:
| Paquete | Debian 11 | Debian 12 |
|---|---|---|
| Apache | 2.4.54 | 2.4.57 |
| Dovecot | 2.3.13 | 2.3.19 |
| Exim | 4.94 | 4.96 |
| GnuPG | 2.2.27 | 2.2.40 |
| libc | 2.31 | 2.36 |
| Linux | 5.10 | 6.1 |
| MariaDB | 10.5 | 10.11 |
| Nginx | 1.18 | 1.22 |
| OpenLDAP | 2.4.57 | 2.5.13 |
| OpenSSH | 8.4p1 | 9.2p1 |
| Perl | 5.32 | 5.36 |
| PHP | 7.4 | 8.2 |
| Postfix | 3.5 | 3.7 |
| PostgreSQL | 13 | 15 |
| Python 3 | 3.9.2 | 3.11.2 |
| systemd | 247 | 252 |
1.2/ Sustitución del paquete NTP por NTPsec
Sección titulada «1.2/ Sustitución del paquete NTP por NTPsec»NTP es un protocolo que sirve para sincronizar el reloj del servidor.
Si ya tienes el paquete ntp, será sustituido por ntpsec, una versión reforzada en seguridad del paquete ntp.
Si no tienes ningún demonio ntp o equivalente, se instalará el paquete systemd-timesyncd.
1.3/ Sustitución de Puppet 5 por Puppet 7
Sección titulada «1.3/ Sustitución de Puppet 5 por Puppet 7»Atención: no actualices los servidores que tengan el agente Puppet en una versión inferior a 7 antes de haber actualizado el servidor que aloja el puppetmaster.
Siempre hay que actualizar el puppetmaster antes que todos los demás servidores.
1.4/ Sustitución (no forzada) de rsyslog por systemd-journald
Sección titulada «1.4/ Sustitución (no forzada) de rsyslog por systemd-journald»Esta es la parte desagradable para los veteranos.
Es buen momento para plantearse eliminar rsyslog en favor de systemd-journald y sus journals binarios, que muchas de las herramientas que seguramente usas no pueden leer.
Tras la migración a Debian 12, puedes eliminar rsyslog con estas órdenes:
apt-mark auto rsyslogapt autoremovePara leer los journals binarios, en lugar de usar la orden tail (una lagrimita), habrá que hacer:
journalctl -efSi aun así conservas rsyslog (al menos durante un tiempo), todos los logs se seguirán escribiendo por defecto en un único fichero, /var/log/syslog (los ficheros alternativos se pueden eliminar).
1.5/ Python3: cambio en la instalación de paquetes externos
Sección titulada «1.5/ Python3: cambio en la instalación de paquetes externos»Por defecto, ya no está permitido instalar paquetes de Python que no estén empaquetados por Debian.
Es posible saltarse esta restricción, pero no es aconsejable.
A partir de ahora, los paquetes externos deben instalarse en entornos de Python aislados, mediante pipx o un entorno virtual (python -m venv).
2. ¿Cómo actualizar Debian 11 a 12?
Sección titulada «2. ¿Cómo actualizar Debian 11 a 12?»Antes de actualizar, tu servidor debe estar respaldado en remoto, en otro datacenter. Y te aconsejo tener también una copia en un proveedor independiente y una copia en tu casa.
Una actualización puede salir mal, destruir datos o dejar el servidor sin arrancar: las bases de datos deben volcarse a SQL antes de cualquier copia de ficheros, y haz además un snapshot si es una máquina virtual. Reserva tiempo para reparar en caso de problema, y ten la capacidad de reiniciar en modo rescue.
Normalmente tu servidor ya está al día, porque eres concienzudo. Si no, es imprescindible ponerlo al día antes:
apt updateapt upgradereboot # si hace falta2.1/ Actualizar los ficheros source-list
Sección titulada «2.1/ Actualizar los ficheros source-list»Aparece una nueva sección de repositorio. En un servidor, en teoría no hará falta, pero se puede incluir: non-free-firmware.
En /etc/apt/sources.list o /etc/apt/sources.list.d/*, sustituye bullseye por bookworm:
deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmwaredeb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmwaredeb http://security.debian.org bookworm-security main contrib non-free non-free-firmwareIMPORTANTE: el nombre que hay que poner es deb.debian.org, que apunta automáticamente al repositorio más cercano.
O situarse en el directorio y sustituir bullseye por bookworm en una sola orden:
sed -i 's/bullseye/bookworm/g' *.list2.2/ Actualizar la lista de paquetes disponibles
Sección titulada «2.2/ Actualizar la lista de paquetes disponibles»apt update2.3/ Actualización mínima
Sección titulada «2.3/ Actualización mínima»Este proceso actualiza los paquetes del sistema que no añaden nuevas dependencias sobre paquetes nuevos ni las quitan:
apt -o Apt::Get::Assume-Yes=true -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade --without-new-pkgs2.4/ Comprobación del espacio en disco antes de la actualización completa
Sección titulada «2.4/ Comprobación del espacio en disco antes de la actualización completa»Te aconsejo limpiar el espacio en disco y comprobar el espacio disponible antes de la actualización completa:
apt cleanapt --purge autoremoveapt -o APT::Get::Trivial-Only=true full-upgrade[ ... ]XXX upgraded, XXX newly installed, XXX to remove and XXX not upgraded.Need to get xx.xMB of archives.After this operation, AAAMB of additional disk space will be used.Si no hay sitio suficiente, aparece este mensaje:
E: You don't have enough free space in /var/cache/apt/archives/.2.5/ Actualización final
Sección titulada «2.5/ Actualización final»apt -o Apt::Get::Assume-Yes=true -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" full-upgradeapt --purge autoremoveSi todo ha ido bien:
rebootEn caso de problema, analiza la situación antes de reiniciar. Si prefieres no encargarte tú mismo, pide un presupuesto.
