Ubuntu publica una versión LTS cada dos años con cinco años de soporte estándar, así que tarde o temprano cada servidor tiene que pasar a la siguiente. La herramienta oficial para hacerlo sin reinstalar es do-release-upgrade. En este tutorial actualizarás un servidor de Ubuntu 22.04 LTS (Jammy Jellyfish) a Ubuntu 24.04 LTS (Noble Numbat) por SSH, con una copia de seguridad previa, un acceso SSH de rescate y las comprobaciones necesarias al terminar. El mismo procedimiento sirve para pasar de 24.04 a 26.04 LTS cuando Ubuntu la ofrezca.
Requisitos previos
- Un servidor con Ubuntu 22.04 LTS, por ejemplo un VPS de CubePath.
- Un usuario no root con privilegios
sudoy acceso por SSH. - Al menos 5 GB libres en
/y unos 200 MB libres en/bootsi es una partición separada. - Una ventana de mantenimiento de una hora aproximadamente: el servidor se reinicia al final y los servicios pueden dejar de responder durante la actualización.
- Acceso a la consola web (VNC) del proveedor por si pierdes la conexión SSH.
Importantesolo se admite la actualización entre LTS consecutivas. Desde 20.04 debes pasar primero a 22.04 y después a 24.04; no es posible saltar directamente.
Paso 1: Hacer una copia de seguridad
Una actualización de versión cambia miles de paquetes y, aunque suele salir bien, no se puede deshacer. Antes de empezar, crea un snapshot del servidor desde el panel de tu proveedor si lo permite, y además copia fuera del servidor los datos que no quieres perder: bases de datos, /etc, directorios de aplicaciones y /home.
Por ejemplo, para guardar la configuración del sistema y la lista de paquetes instalados:
sudo tar -czf /root/etc-backup-$(date +%F).tar.gz /etc
dpkg --get-selections > ~/paquetes-22.04.txt
Si usas MySQL o PostgreSQL, haz también un volcado lógico (mysqldump o pg_dumpall) y cópialo a otra máquina con scp o rsync.
Paso 2: Revisar el software que va a cambiar
Ubuntu 24.04 incluye versiones mayores nuevas de muchos componentes. Las más habituales en servidores son:
| Componente | 22.04 | 24.04 |
|---|---|---|
| Kernel | 5.15 | 6.8 |
| PHP | 8.1 | 8.3 |
| Python | 3.10 | 3.12 |
| PostgreSQL | 14 | 16 |
| MySQL | 8.0 | 8.0 |
| Nginx | 1.18 | 1.24 |
| OpenSSL | 3.0 | 3.0 |
Revisa que tus aplicaciones sean compatibles con esas versiones. Dos cambios suelen causar sorpresas:
- PHP: los módulos y pools de
php8.1-fpmno se migran solos aphp8.3-fpm. Tendrás que reinstalar las extensiones para 8.3 y copiar tus ajustes de/etc/php/8.1/a/etc/php/8.3/. - Python: los entornos virtuales creados con Python 3.10 dejan de funcionar y hay que recrearlos. Además,
pip installfuera de un entorno virtual queda bloqueado por la PEP 668.
Localiza también los repositorios de terceros (PPAs, Docker, NodeSource), porque la actualización los desactiva:
ls /etc/apt/sources.list.d/
Paso 3: Actualizar completamente la versión actual
do-release-upgrade se niega a continuar si hay actualizaciones pendientes de la versión actual. Instálalas todas:
sudo apt update
sudo apt full-upgrade
Elimina los paquetes que ya no se necesitan, para reducir lo que habrá que procesar:
sudo apt autoremove --purge
Comprueba que no haya paquetes retenidos, porque pueden bloquear la actualización:
apt-mark showhold
Si aparece alguno, libéralo con sudo apt-mark unhold nombre_paquete o asegúrate de que no impide la actualización.
Si se ha instalado un kernel nuevo, reinicia antes de continuar:
[ -f /var/run/reboot-required ] && sudo reboot
Paso 4: Preparar la herramienta de actualización
Instala el paquete que proporciona do-release-upgrade (en las imágenes de servidor suele venir ya instalado):
sudo apt install update-manager-core
Comprueba que el sistema está configurado para ofrecer versiones LTS:
grep Prompt /etc/update-manager/release-upgrades
Prompt=lts
Si ves Prompt=never, edita el archivo y cambia el valor a lts:
sudo nano /etc/update-manager/release-upgrades
[DEFAULT]
Prompt=lts
Paso 5: Abrir el puerto SSH de rescate
Cuando se ejecuta por SSH, do-release-upgrade arranca un segundo servidor SSH en el puerto 1022 por si la sesión principal se corta mientras se actualiza OpenSSH. Si usas UFW, permítelo de forma temporal:
sudo ufw allow 1022/tcp
La herramienta también ejecuta la actualización dentro de screen, así que si pierdes la conexión puedes volver a entrar y recuperar la sesión con:
sudo screen -r
Paso 6: Ejecutar la actualización
Lanza la actualización:
sudo do-release-upgrade
El proceso tiene varias fases y te pedirá confirmación en algunas de ellas:
- Avisa de que estás conectado por SSH y del puerto 1022. Responde
y. - Calcula los cambios y muestra un resumen de paquetes que se instalarán, actualizarán y eliminarán. Léelo y confirma con
y. - Descarga e instala los paquetes. Esta es la fase más larga.
- Pregunta qué hacer con los archivos de configuración que has modificado y que el paquete nuevo también cambia. Si no sabes qué elegir, pulsa
Dpara ver las diferencias; en general conviene mantener tu versión (N, la opción por defecto) y revisar después el archivo.dpkg-distque se guarda junto a él. - Ofrece eliminar los paquetes obsoletos. Responde
ysalvo que dependas de alguno. - Pide reiniciar. Responde
y.
Notasi ves
No new release found, Ubuntu aún no ofrece la actualización a la nueva LTS. Las actualizaciones entre LTS se habilitan con la primera versión puntual (por ejemplo, 24.04.1); espera a que esté disponible en lugar de forzarla con la opción-d, que es para versiones de desarrollo.
Paso 7: Verificar el sistema actualizado
Tras el reinicio, vuelve a conectarte y confirma la versión:
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 24.04.3 LTS
Release: 24.04
Codename: noble
Comprueba que arrancó con el kernel nuevo:
uname -r
6.8.0-85-generic
Busca servicios que no hayan arrancado:
systemctl --failed
UNIT LOAD ACTIVE SUB DESCRIPTION
0 loaded units listed.
Si aparece alguno, revisa su registro con sudo journalctl -u nombre_servicio -b y corrígelo antes de dar por terminada la ventana de mantenimiento.
Por último, prueba tus aplicaciones: carga la web, conecta a la base de datos y revisa los registros de la aplicación.
Paso 8: Limpiar y reactivar repositorios
Cierra el puerto de rescate que abriste en el paso 5:
sudo ufw delete allow 1022/tcp
Instala las actualizaciones posteriores y elimina lo que ya no se usa:
sudo apt update
sudo apt full-upgrade
sudo apt autoremove --purge
Los repositorios de terceros quedaron desactivados (sus entradas aparecen comentadas), y las fuentes oficiales de Ubuntu normalmente pasan al formato deb822 en /etc/apt/sources.list.d/ubuntu.sources. Para cada repositorio externo, comprueba que el proveedor publica paquetes para noble, cambia jammy por noble en su archivo y actívalo de nuevo:
grep -r jammy /etc/apt/sources.list.d/
Después de editar los archivos, ejecuta sudo apt update y confirma que no hay errores.
Si tenías PostgreSQL 14, el clúster antiguo sigue funcionando con los binarios de la versión 14. Cuando hayas comprobado tus copias de seguridad, puedes migrarlo a PostgreSQL 16 con las herramientas de postgresql-common:
pg_lsclusters
sudo pg_upgradecluster 14 main
Tras verificar que el clúster 16 funciona, elimina el antiguo con sudo pg_dropcluster 14 main.
Solución de problemas
Please install all available updates for your release before upgrading.
Quedan actualizaciones pendientes. Repite sudo apt update && sudo apt full-upgrade y reinicia si se ha instalado un kernel nuevo.
La actualización se interrumpió a mitad (corte de SSH o de red).
Reconéctate por SSH o por el puerto 1022 y recupera la sesión con sudo screen -r. Si el proceso ya no existe, termina la configuración de los paquetes a medio instalar:
sudo dpkg --configure -a
sudo apt --fix-broken install
sudo apt full-upgrade
No hay espacio en /boot.
Elimina los kernels antiguos con sudo apt autoremove --purge antes de volver a lanzar la actualización.
Un servicio no arranca tras la actualización.
Revisa sudo journalctl -u nombre_servicio -b y compara tu configuración con el archivo .dpkg-dist o .ucf-dist que el paquete dejó al lado. La causa más habitual es una directiva que ya no existe en la nueva versión.
Conclusión
Has actualizado el servidor de Ubuntu 22.04 LTS a 24.04 LTS con do-release-upgrade, con un plan de vuelta atrás, acceso SSH de rescate y comprobaciones de servicios, kernel y repositorios. Ubuntu 24.04 recibirá soporte estándar hasta abril de 2029.
Como siguientes pasos, puedes activar unattended-upgrades para aplicar los parches de seguridad automáticamente, revisar la configuración de UFW del servidor y documentar las incidencias de esta actualización para que la siguiente sea más rápida.
