CentOS Linux ya no recibe actualizaciones: CentOS 8 dejó de tener soporte el 31 de diciembre de 2021 y CentOS 7 el 30 de junio de 2024. Un servidor que sigue con CentOS acumula vulnerabilidades sin parchear y ni siquiera puede instalar paquetes desde los espejos originales. En este tutorial migrarás un servidor CentOS a Rocky Linux o AlmaLinux, las dos distribuciones compatibles con RHEL que lo sustituyen, usando las herramientas oficiales de cada proyecto y comprobando después que el sistema queda limpio.
Requisitos previos
- Un servidor con CentOS Linux 7.9 o CentOS Linux 8 (x86_64), con acceso root o un usuario con
sudo. - Un snapshot o copia de seguridad completa del servidor. Las migraciones in situ no se pueden deshacer.
- Acceso a la consola web (VNC) del proveedor, porque el servidor se reinicia y en el caso de CentOS 7 arranca en un entorno especial de actualización.
- Al menos 5 GB libres en
/y 200 MB en/boot. - Una ventana de mantenimiento de una a dos horas.
Paso 1: Elegir el camino de migración
El procedimiento depende de la versión de partida. Compruébala:
cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
| Versión actual | Destino directo | Herramienta |
|---|---|---|
| CentOS Linux 7.9 | Rocky Linux 8 o AlmaLinux 8 | ELevate (basada en Leapp) |
| CentOS Linux 8 | Rocky Linux 8 o AlmaLinux 8 | migrate2rocky o almalinux-deploy |
| CentOS Stream 8 o 9 | No recomendado in situ | Reinstalación |
CentOS Stream va por delante de RHEL, así que migrarlo a Rocky Linux o AlmaLinux implica bajar de versión paquetes, algo que las herramientas no garantizan. En ese caso, y en general en servidores de producción complejos, la opción más segura es instalar Rocky Linux 9 o AlmaLinux 9 en un servidor nuevo y mover los datos, como se explica al final.
Rocky Linux y AlmaLinux son equivalentes a efectos prácticos: los mismos paquetes, rutas y comandos. Rocky Linux busca ser idéntica a RHEL y AlmaLinux busca compatibilidad binaria con RHEL y mantiene la herramienta ELevate. Si un proveedor de software solo certifica una de ellas, elige esa; si no, cualquiera sirve.
Paso 2: Hacer una copia de seguridad e inventario
Además del snapshot, guarda fuera del servidor lo que necesitarías para reconstruirlo a mano:
sudo tar -czf /root/etc-backup-$(date +%F).tar.gz /etc
rpm -qa | sort > ~/paquetes-centos.txt
systemctl list-units --type=service --state=running > ~/servicios-centos.txt
Localiza los paquetes que no vienen de los repositorios de CentOS, porque son los que más problemas dan durante la migración (paneles de control, controladores propietarios, RPMs instalados a mano):
rpm -qa --qf '%{NAME} %{VENDOR}\n' | grep -v 'CentOS' | sort
Copia /root/etc-backup-*.tar.gz y los listados a otra máquina con scp o rsync, junto con los volcados de tus bases de datos.
Paso 3: Reparar los repositorios de CentOS
Como CentOS ya no tiene soporte, los espejos mirror.centos.org están vacíos y yum falla con errores como Cannot find a valid baseurl for repo: base. Los paquetes finales siguen disponibles en el archivo histórico vault.centos.org. Apunta los repositorios oficiales a ese archivo:
sudo sed -i -e 's/^mirrorlist=/#mirrorlist=/' -e 's|^#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|' /etc/yum.repos.d/CentOS-*.repo
Limpia la caché y comprueba que los repositorios responden:
sudo yum clean all
sudo yum repolist
repo id repo name status
base/7/x86_64 CentOS-7 - Base 10,072
extras/7/x86_64 CentOS-7 - Extras 526
updates/7/x86_64 CentOS-7 - Updates 6,173
repolist: 23,771
Ahora instala todas las actualizaciones pendientes y reinicia para arrancar con el último kernel:
sudo yum -y update
sudo reboot
A partir de aquí, sigue el camino A (CentOS 7) o el camino B (CentOS 8).
Camino A: CentOS 7 a AlmaLinux 8 o Rocky Linux 8 con ELevate
ELevate es un proyecto de AlmaLinux que adapta Leapp, la herramienta de Red Hat para actualizar RHEL entre versiones mayores, para que funcione con CentOS 7 y permita elegir el destino.
Instalar ELevate
Instala el repositorio de ELevate:
sudo yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el7.noarch.rpm
Instala Leapp y los datos de migración del destino que hayas elegido. Para AlmaLinux 8:
sudo yum install -y leapp-upgrade leapp-data-almalinux
Para Rocky Linux 8, usa leapp-data-rocky en lugar de leapp-data-almalinux.
Ejecutar la comprobación previa
leapp preupgrade analiza el sistema sin cambiar nada y genera un informe con los problemas encontrados:
sudo leapp preupgrade
Revisa el informe, sobre todo las entradas marcadas como inhibitor, que bloquean la migración:
sudo less /var/log/leapp/leapp-report.txt
Estos son los tres inhibidores más habituales en CentOS 7 y su solución:
- Módulo
pata_acpicargado: descárgalo consudo rmmod pata_acpi. - Falta una respuesta sobre
pam_pkcs11: confirma la eliminación del módulo consudo leapp answer --section remove_pam_pkcs11_module_check.confirm=True. PermitRootLoginsin valor explícito en SSH: RHEL 8 cambia el valor por defecto, así que Leapp exige que lo fijes. Edita/etc/ssh/sshd_configy añade la línea con el valor que quieras mantener, por ejemploPermitRootLogin nosi entras con un usuario consudo.
Vuelve a ejecutar sudo leapp preupgrade hasta que el informe no contenga inhibidores.
Lanzar la migración
Cuando la comprobación esté limpia, inicia la migración:
sudo leapp upgrade
Leapp descarga los paquetes del nuevo sistema y prepara un entorno de arranque temporal. Al terminar, reinicia:
sudo reboot
El servidor arranca la entrada ELevate-Upgrade-Initramfs y aplica la migración sin intervención. Tarda entre 15 y 40 minutos y hace un reinicio adicional; puedes seguirlo desde la consola VNC. No interrumpas este proceso.
Camino B: CentOS 8 a Rocky Linux 8 o AlmaLinux 8
En CentOS Linux 8 basta con cambiar los repositorios y reinstalar los paquetes de marca, porque la versión mayor es la misma. Cada proyecto publica un script para hacerlo. Descárgalo, revísalo antes de ejecutarlo y lánzalo como root.
Para Rocky Linux 8:
curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh
less migrate2rocky.sh
sudo bash migrate2rocky.sh -r
El registro completo queda en /var/log/migrate2rocky.log.
Para AlmaLinux 8:
curl -O https://raw.githubusercontent.com/AlmaLinux/almalinux-deploy/master/almalinux-deploy.sh
less almalinux-deploy.sh
sudo bash almalinux-deploy.sh
Cuando el script termine sin errores, reinicia para cargar el kernel del nuevo sistema:
sudo reboot
Paso 4: Verificar la migración
Conéctate de nuevo y confirma la distribución:
cat /etc/os-release
NAME="AlmaLinux"
VERSION="8.10 (Cerulean Leopard)"
ID="almalinux"
ID_LIKE="rhel centos fedora"
VERSION_ID="8.10"
...
Comprueba que arrancaste con un kernel de la versión 8 (el8):
uname -r
4.18.0-553.el8_10.x86_64
Verifica que los repositorios activos son los de la nueva distribución y responden:
sudo dnf repolist
Busca paquetes antiguos que hayan quedado. Si migraste desde CentOS 7, no debería quedar ningún paquete el7:
rpm -qa | grep -E '\.el7'
Si aparecen, revisa si pertenecen a software de terceros que necesitas reinstalar desde un repositorio para EL8; los demás puedes eliminarlos con sudo dnf remove. En la migración desde CentOS 8, comprueba también que no quedan paquetes de marca de CentOS:
rpm -qa | grep -i centos
Por último, revisa que los servicios arrancaron y que SELinux sigue en su modo habitual:
systemctl --failed
getenforce
Prueba tus aplicaciones y revisa sus registros antes de cerrar la ventana de mantenimiento.
Paso 5: Tareas posteriores
Actualiza el sistema a la última versión menor:
sudo dnf -y upgrade
Si usabas EPEL, reinstálalo para EL8 y activa el repositorio powertools, del que dependen muchos paquetes de EPEL:
sudo dnf install -y epel-release
sudo dnf config-manager --set-enabled powertools
Los servidores migrados desde CentOS 7 heredan iptables configurado a mano o firewalld. En EL8 firewalld usa nftables por debajo; comprueba que tus reglas siguen presentes con sudo firewall-cmd --list-all.
Rocky Linux 8 y AlmaLinux 8 reciben soporte hasta mayo de 2029. Planifica el salto a la versión 9 (soportada hasta 2032): ELevate también permite actualizar de AlmaLinux 8 o Rocky Linux 8 a la versión 9 con el mismo procedimiento de leapp preupgrade y leapp upgrade.
Alternativa: instalación limpia y migración de datos
Si el servidor tiene muchos años de cambios manuales, software de terceros sin versión para EL8 o es crítico, la migración in situ no compensa el riesgo. En su lugar:
- Crea un servidor nuevo con Rocky Linux 9 o AlmaLinux 9.
- Instala los servicios desde los repositorios de la nueva versión y adapta la configuración guardada en el paso 2, en lugar de copiar
/etcentero. - Migra los datos con volcados lógicos (
mysqldump,pg_dump) yrsync. - Prueba el servidor nuevo, cambia el DNS o la IP y mantén el antiguo apagado unos días como respaldo.
Este camino requiere más trabajo, pero termina en una versión soportada hasta 2032 y sin restos del sistema anterior.
Solución de problemas
Cannot find a valid baseurl for repo al ejecutar yum.
Los repositorios siguen apuntando a mirror.centos.org. Repite el paso 3 y revisa que no queden líneas mirrorlist= activas en /etc/yum.repos.d/CentOS-*.repo.
leapp upgrade se detiene por inhibidores que no aparecían antes.
Vuelve a revisar /var/log/leapp/leapp-report.txt: cada entrada incluye la acción recomendada. No fuerces la migración ignorando inhibidores.
El servidor no arranca después de la migración. Desde la consola VNC, elige en el menú de GRUB un kernel anterior si está disponible. Si el sistema no se recupera, restaura el snapshot del paso 2 y valora la instalación limpia.
Conclusión
Has migrado un servidor CentOS a Rocky Linux o AlmaLinux 8 con las herramientas oficiales, has comprobado que no quedan paquetes ni repositorios de CentOS y el sistema vuelve a recibir parches de seguridad. Como siguientes pasos, planifica la actualización a la versión 9 con ELevate, configura actualizaciones automáticas de seguridad con dnf-automatic y revisa la política de firewalld del servidor.
