Volver

2025/04/09

8. Cambiando de CentOS a Oracle Linux

En diciembre de 2020, el blog oficial de CentOS anunció que el desarrollo de CentOS terminaría y que se transicionaría a CentOS Stream. El anuncio del fin de CentOS, que anteriormente tenía una presencia abrumadora como una distribución compatible con RHEL (clon de RHEL), fue una gran sorpresa.

Han pasado casi tres años desde el anuncio del fin de CentOS en 2020, y han aparecido varias alternativas a CentOS. En este artículo, explicaremos la situación actual de CentOS y post-CentOS, y cómo cambiar a Oracle Linux, que es un destino de migración prometedor.

Fin de CentOS y CentOS Stream

Para entender la situación actual de CentOS, explicaremos una visión general del fin de CentOS y el nuevo CentOS Stream.

Anuncio del Fin de Vida de CentOS

El anuncio del fin de CentOS fue publicado en el blog oficial de CentOS, “El Proyecto CentOS cambia su enfoque a CentOS Stream“.

El contenido de este blog se puede resumir como sigue:

  • CentOS 8 finalizará su soporte el 31 de diciembre de 2021
  • CentOS 7 será soportado hasta el 30 de junio de 2024 como de costumbre.
  • CentOS transicionará a CentOS Stream en el futuro
  • CentOS Stream es la rama upstream (desarrollo) de RHEL. Está posicionado de manera diferente a las reconstrucciones tradicionales.
  • Se anima a los usuarios de CentOS 8 a migrar a CentOS Stream, que tiene menos diferencias, o a RHEL si están preocupados por usarlo en un entorno de producción.

Además, desde la perspectiva del usuario, esto se puede expresar como sigue:

  • El soporte para CentOS terminará pronto, por lo que necesitas considerar migrar inmediatamente.
  • En este momento (septiembre de 2023), el soporte para CentOS 8 ha terminado, y el soporte para CentOS 7 finalizará en junio de 2024. Después de que termine el soporte, los paquetes de actualización ya no serán proporcionados y el repositorio Yum ya no estará disponible.
  • No se proporcionan paquetes de actualización, aumentando los riesgos de seguridad
  • CentOS Stream no es una reconstrucción de RHEL como CentOS, sino que está posicionado como una versión de desarrollo. Por lo tanto, hay problemas con su uso en un entorno de producción, al menos.

Diferencias entre CentOS y CentOS Stream

CentOS era una distribución de Linux compatible con RHEL, también conocida como clon de RHEL. Por lo tanto, es compatible con RHEL y es casi idéntica a nivel de código fuente. Por cierto, introduje el siguiente diagrama en el artículo anterior, “¿Estás usando Oracle Linux? (Parte 1)“.

Por otro lado, CentOS Stream es una construcción nocturna de RHEL que se lanza en base a un lanzamiento continuo. Una construcción nocturna es una compilación generada usando el código fuente más reciente de un proyecto de desarrollo y es diferente de la versión de lanzamiento oficial.

Es un poco difícil de entender porque es diferente de lo que hemos tenido hasta ahora, pero el siguiente diagrama publicado por el Proyecto CentOS debería ayudar. Por ejemplo, RHEL 8 (≓ CentOS 8) fue creado al bifurcarse de Fedora 28. Luego se lanzaron 8.2 y 8.3 en ese orden, y se crearon erratas para cada uno. Dependiendo de la configuración del sistema operativo, también es posible actualizar de 8.3 a la última versión 8.8.

Fuente: CentOS Stream es Entrega Continua licenciado bajo CC BY-SA 4.0

CentOS Stream es un sistema de lanzamiento continuo, por lo que no hay versiones menores como 8.2 o 8.3. Solo tiene la fecha de lanzamiento. Si miras la imagen ISO publicada en el sitio espejo, tiene una fecha como 20230825. Además, en el sitio espejo, 20230825 y latest son lo mismo, y el contenido de latest siempre se actualiza.

También, al mirar el nivel de paquete individual, no hay garantía de que CentOS Stream y RHEL sean idénticos. Dado que los cambios se realizan primero en CentOS Stream, al comparar las últimas versiones, CentOS Stream es más nuevo y puede considerarse una versión que aún no ha sido probada en producción.

Espero que entiendas que aunque CentOS y CentOS Stream son funcionalmente similares, sus posiciones son bastante diferentes. Es por eso que causó tanto revuelo en todo el mundo. Las diferencias entre CentOS y CentOS Stream se describen en detalle en el “Blog del Ingeniero Akahato de Red Hat: La Relación Entre Fedora/CentOS Stream/CentOS/RHEL”. Por favor, echa un vistazo si estás interesado.

Período de soporte para cada distribución de Linux

Este artículo presenta el período de soporte para las distribuciones de Linux basadas en RHEL. La única versión de CentOS que actualmente tiene soporte es CentOS 7, que será soportada hasta el 30 de junio de 2024. No hay CentOS 9. Por lo tanto, si actualmente estás usando CentOS, necesitarás migrar a una de las otras distribuciones de Linux.

VersiónFin del soporte(*1)
CentOS 72024/06/30
CentOS 82021/12/31
CentOS Stream 82024/05/31
CentOS Stream 9Sin decidir (programado para ser el mismo que RHEL9)
Red Hat Enterprise Linux 72024/06/30
Red Hat Enterprise Linux 82029/05/31
Red Hat Enterprise Linux 92032/05/31
Oracle Linux 72024/12
Oracle Linux 82029/07
Oracle Linux 92032/06

*1: El fin del soporte para Oracle Linux es el fin del Soporte Premier. El Soporte Extendido y el Soporte de Mantenimiento se proporcionarán por un período más largo.

Opciones de migración de CentOS

Consideremos las distribuciones de Linux que son candidatas para la migración desde CentOS. Considerando la facilidad de migración, la serie RHEL es la mejor, y las principales opciones son las siguientes:

  • CentOS Stream
  • Red Hat Enterprise Linux
  • Oracle Linux
  • AlmaLinux
  • Rocky Linux
  • MIRACLE LINUX
  • Amazon Linux

AlmaLinux y Rocky Linux son distribuciones de Linux que nacieron del rechazo al fin de CentOS. Ambas están patrocinadas por grandes empresas y también se ofrecen en la nube pública.

Cuál elijas depende de factores como tu propósito y presupuesto, por lo que es difícil decir cuál es incondicionalmente mejor. La siguiente tabla los compara desde la perspectiva del uso empresarial. Para el uso empresarial, los factores importantes incluyen la duración del período de soporte, si hay soporte pagado disponible o no, si hay hardware soportado disponible o no, si los paquetes comerciales son soportados o no, y el costo.

DistribuciónLicencia/SuscripciónSoporte pagadoMétodo de migraciónContras y puntos negativos
CentOS StreamNo requeridaningunoReemplazar un repositorioParece ser muy estable, pero necesitas tener cuidado. No es compatible con el RHEL tradicional, por lo que no hay hardware soportado y los paquetes comerciales no son soportados. ¿Puedes convencer a tu jefe o clientes?
Red Hat Enterprise Linuxnecesariapuede serHerramientas de migración disponiblesLíder de la industria, pero requiere suscripción y Acuerdo Empresarial de Red Hat
Oracle LinuxNo requerida, pero algunas características están disponibles solo para usuarios de soporte pagadopuede serHerramientas de migración disponiblesTiene un largo historial y se usa para aplicaciones críticas como Exadata. No es muy conocido entre los usuarios de productos Oracle.
AlmaLinux/Rocky LinuxNo requeridaSoporte pagado disponible (incluyendo soporte de terceros)Herramientas de migración disponiblesEs una distribución nueva, así que necesitas observarla.
Amazon LinuxNo requeridapuede serSin herramientas proporcionadas por el proveedorPuede usarse en las instalaciones y tiene alta compatibilidad con AWS. Dado que está basado en Fedora, la compatibilidad no es alta y el período de soporte es corto, de aproximadamente 5 años.
MIRACLE LINUXNo requeridapuede serHerramientas de migración disponiblesAunque tiene un largo historial, no es muy conocido entre los proveedores nacionales.

Cambio de CentOS a Oracle Linux usando herramientas de migración

Oracle Linux proporciona un script centos2ol.sh que cambia CentOS a Oracle Linux en el lugar. Esta vez, usaremos este script para cambiar CentOS 8 a Oracle Linux 8. El procedimiento para cambiar a CentOS 7 es casi el mismo.

Oracle ha lanzado varios documentos, por lo que en esta columna profundizaremos en algunos de ellos mientras destacamos los puntos principales.

Para ejecutar el script de migración:

Los pasos para ejecutar el script de migración son los siguientes. Los pasos preparatorios 1 a 3 requieren múltiples comandos. Sin embargo, los pasos de migración 4 y 5 se pueden realizar con un número mínimo de comandos.

  1. Verificar las restricciones
  2. Respaldo del sistema (omitido en el texto)
  3. Preparación del CentOS fuente
  4. Ejecución del script de migración
  5. Verificación posterior a la migración

Verificar las restricciones

Las limitaciones de la herramienta de migración son las siguientes. Por ahora, solo necesitas estar al tanto de estas limitaciones, y las verificaremos en la próxima sección, “Preparación del CentOS fuente.”

  1. El fuente es CentOS 6, 7, 8 o Rocky Linux 8, 9
  2. Acceso a los repositorios Yum de CentOS y Oracle Linux, ya sea directamente o a través de un proxy
  3. La instancia no está registrada con una herramienta de gestión de paquetes de terceros como Spacewalk.
  4. Si has instalado paquetes de fuentes distintas al repositorio oficial de CentOS, pueden ser compatibles, pero no garantizamos que funcionen. Algunos programas /etc/oracle-release pueden causar problemas si están instalados.
  5. Si algunos módulos del núcleo están instalados, como productos antivirus comerciales o controladores de hardware, pueden no funcionar después del cambio.
  6. El script de migración solo habilita los repositorios base, como base, updates y BaseOS. Si has instalado paquetes de otros repositorios, puede que necesites habilitar repositorios adicionales.
  7. /var/cache tiene al menos 5GB de espacio libre

Preparación del CentOS fuente

Aquí nos aseguraremos de que no estemos violando ninguna restricción del script.

Ten en cuenta que los pasos preparatorios requieren privilegios de administrador, por lo que debes anteponer sudo al comando o usar su para ejecutarlo como usuario root. He omitido sudo para enfatizar la simplicidad de la apariencia. Además, CentOS 8 recomienda dnf en lugar de yum, pero me he quedado con yum porque es compatible.

1. Verificar la versión de CentOS

Inicia sesión en el fuente y verifica la versión de CentOS. Si es 8 como se muestra a continuación, no hay problema.

# cat /etc/centos-release
CentOS Linux release 8.3.2011

2. Verificar la conexión al repositorio Yum de CentOS

Verifica si puedes conectarte al repositorio Yum de CentOS. CentOS 8 ya no tiene un repositorio en el sitio espejo, por lo que si no puedes conectarte, obtendrás el siguiente error:

# yum check-update
CentOS Linux 8 - AppStream                       51  B/s |  38  B     00:00
Error: Falló la descarga de los metadatos del repo 'appstream': No se puede preparar la lista de espejos interna: No hay URLs en la lista de espejos

Si ocurre un error, cambia el repositorio al que estás apuntando ejecutando el siguiente comando:

# sed -i -e 's/^mirrorlist/#mirrorlist/g' -e 's/^#baseurl=http:\/\/mirror/baseurl=http:\/\/vault/g' /etc/yum.repos.d/CentOS-*repo

Si el repositorio está disponible, se descargarán los metadatos del repositorio y se mostrarán los paquetes actualizables como se muestra a continuación.

# yum check-update
CentOS Linux 8 - AppStream                       16 MB/s | 8.4 MB     00:00
CentOS Linux 8 - BaseOS                         9.2 MB/s | 4.6 MB     00:00
CentOS Linux 8 - Extras                          46 kB/s |  10 kB     00:00

NetworkManager.x86_64         1:1.32.10-4.el8       baseos
NetworkManager-libnm.x86_64   1:1.32.10-4.el8       baseos

3. Verificar que no haya paquetes problemáticos

Verifica los núcleos y paquetes instalados fuera de los repositorios base (anaconda, base, baseos, updates, AppStream, etc.). Los núcleos son particularmente problemáticos, así que elimina el núcleo centosplus si está presente.

Muestra el núcleo instalado. El nombre del repositorio desde el que fue instalado se muestra a la derecha. Este ejemplo está bien.

# yum list installed kernel
kernel.x86_64                 4.18.0-240.el8        @anaconda

Para verificar no solo el núcleo sino también los paquetes instalados desde fuera del repositorio base, usa el siguiente comando. Si hay paquetes instalados desde repositorios de terceros como EPEL, se mostrarán los paquetes relevantes. Sin embargo, los paquetes del espacio de usuario rara vez son un problema.

# rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{VENDOR}\n' | grep -v "CentOS"

4. Verificar el repositorio base

Verifica que los repositorios base estén habilitados. Si están deshabilitados, habilítalos.

# yum repolist
repo id                nombre del repo
appstream              CentOS Linux 8 - AppStream
baseos                 CentOS Linux 8 - BaseOS
extras                 CentOS Linux 8 - Extras

Si algún repositorio está deshabilitado, habilítalo.

# dnf config-manager --enable BaseOS AppStream extras

Además, si se muestra el siguiente mensaje que comienza con “This system is” al principio, el sistema está registrado con Spacewalk, etc. El script de migración no se puede usar, así que elimínalo de la gestión o renuncia a usar el script.

# yum repolist
...
Este sistema está recibiendo actualizaciones del servidor Red Hat Satellite o Spacewalk
repo id                       nombre del repo

5. Actualizaciones de paquetes

Actualiza los paquetes a la última versión. Aunque no es obligatorio actualizar a la última versión, se actualizará cuando ejecutes el script de migración, por lo que al final será lo mismo.

# yum update -y

6. Verificar el espacio libre en disco

Verifica que /var/cache tenga al menos 5GB de espacio libre.

# df -h /var/cache
Sistema de archivos           Tamaño  Usado  Disp  Uso%  Punto de montaje
/dev/mapper/cl_centos8-root    47G   1.7G   46G    4%  /

7. Deshabilitar las actualizaciones automáticas de paquetes

Si las actualizaciones automáticas de paquetes están activadas mientras se ejecuta el script de migración, no funcionarán correctamente, por lo que deben deshabilitarse. CentOS tiene dos tipos de actualizaciones automáticas de paquetes:

  • yum-cron (CentOS 7) o dnf-automatic (CentOS 8)
  • Packagekit integrado en el entorno de escritorio

Si no tienes el escritorio instalado, verifica yum-cron o dnf-automatic. Si tienes el escritorio instalado, deberías verificar ambos.

7-1. Deshabilitar dnf-automatic

Verifica si dnf-automatic está instalado. Si no se muestra nada como a continuación, pasa a “7-2. Deshabilitar Packagekit”.

# rpm -qa | grep dnf-automatic
★Si no se muestra nada, no está instalado

Cuando está instalado, verifica la configuración del temporizador. En el siguiente ejemplo, las descargas automáticas (dnf-automatic-download.timer) están habilitadas.

# systemctl list-unit-files --type=timer | grep dnf-auto
dnf-automatic-download.timer   habilitado
dnf-automatic-install.timer    deshabilitado
dnf-automatic-notifyonly.timer deshabilitado
dnf-automatic.timer            deshabilitado

Si alguno de ellos está habilitado, deshabilítalos todos.

# systemctl disable dnf-automatic-download.timer --now
7-2. Deshabilitar Packagekit

Si tienes un entorno GUI instalado, verifica Packagekit.

# systemctl status packagekit

Cuando dice “active (running)” como se muestra en la marca ★, está ejecutándose. Si el servicio Packagekit en sí no existe, dirá “Unit packagekit.service could not be found.” Esto no es relevante en este caso.

● packagekit.service - Daemon de PackageKit
   Loaded: loaded (/usr/lib/systemd/system/packagekit.service; static; vendor preset: disabled)
   Active: ★active (running)★ desde el mar 15 ago 2023 09:31:27 GMT; 59s ago
 Main PID: 21960 (packagekitd)
    Tasks: 3
   CGroup: /system.slice/packagekit.service
           └─21960 /usr/libexec/packagekitd

15 dic 09:31:26 centos7 systemd[1]: Iniciando Daemon de PackageKit...
15 dic 09:31:27 centos7 PackageKit[21960]: inicio del daemon
15 dic 09:31:27 centos7 systemd[1]: Daemon de PackageKit iniciado.

Cuando Packagekit está ejecutándose, detén el servicio y desactiva el inicio automático.

# systemctl disable packagekit --now

8. Descargar el script de migración

Descarga el script de migración. Si necesitas un proxy para acceder a Internet, especifica el servidor proxy en las opciones --proxy o en las variables de entorno https_proxy.

# curl -O https://raw.githubusercontent.com/oracle/centos2ol/main/centos2ol.sh

Verifica las opciones disponibles.

# bash centos2ol.sh -h
Uso: centos2ol.sh [OPCIONES]

OPCIONES
-h
        Mostrar esta ayuda y salir
-k
        No instalar el núcleo UEK y deshabilitar los repositorios UEK
-r
        Reinstalar todos los RPM de CentOS con RPM de Oracle Linux
        Nota: Esto no es necesario para el soporte
-V
        Verificar la información de RPM antes y después del cambio

Ejecutando los Scripts de Migración

Ahora que todo está listo, ejecuta el script de migración para cambiar a Oracle Linux. El tiempo que toma ejecutar depende del número de paquetes instalados, la velocidad de la línea y el rendimiento de la máquina. En el entorno que probé, tomó entre 10 y 60 minutos.

# bash centos2ol.sh

Si el script se ejecuta con éxito, se muestra el siguiente mensaje:

Sincronización exitosa.
Actualizando el cargador de arranque GRUB2.
Generando archivo de configuración de grub ...
hecho
Cambiando el núcleo de arranque predeterminado al UEK.
Eliminando la caché de yum
Cambio completo.
Oracle recomienda reiniciar este sistema.

Sigue el mensaje para reiniciar el sistema.

# systemctl reboot

Verificación posterior a la migración

Después de reiniciar, verifica cómo está tu sistema.

  1. Se ha añadido /etc/oracle-release y se ha eliminado /etc/centos-release.
$ ls -l /etc/*-release
-rw-r--r--. 1 root root  32  7 ago 00:03 /etc/oracle-release
-rw-r--r--. 1 root root 489  7 ago 00:03 /etc/os-release
-rw-r--r--. 1 root root  45  7 ago 00:03 /etc/redhat-release
lrwxrwxrwx. 1 root root  14  7 ago 00:03 /etc/system-release -> oracle-release
  1. Antes de la migración, la versión era CentOS 8.3, pero ahora es la última Oracle Linux 8.8. Si migras usando el script de migración, se convertirá en la última versión.
$ cat /etc/oracle-release
Oracle Linux Server release 8.8
  1. El núcleo predeterminado es UEK, no RHCK. Si no quieres usar UEK, especifica centos2ol.sh -k al ejecutar el script como sigue:
$ uname -r
5.4.17-2136.322.6.2.el8uek.x86_64
  1. Verifica si quedan paquetes de CentOS. Se muestran los siguientes núcleos. Estos no están en uso, por lo que pueden eliminarse.
$ rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{VENDOR}\n' | grep CentOS | sort -n
kernel-4.18.0-240.el8   CentOS
kernel-core-4.18.0-240.el8      CentOS
kernel-modules-4.18.0-240.el8   CentOS
  1. Vamos un paso más allá y mostramos la lista de paquetes relacionados con el núcleo. Podemos ver que el núcleo anterior de CentOS y los últimos RHCK y UEK para Oracle Linux están instalados.
# rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{VENDOR}\n' | grep kernel- | sort -n
kernel-4.18.0-240.el8   CentOS
kernel-4.18.0-477.21.1.el8_8    Oracle America
kernel-core-4.18.0-240.el8      CentOS
kernel-core-4.18.0-477.21.1.el8_8       Oracle America
kernel-modules-4.18.0-240.el8   CentOS
kernel-modules-4.18.0-477.21.1.el8_8    Oracle America
kernel-tools-4.18.0-477.21.1.el8_8      Oracle America
kernel-tools-libs-4.18.0-477.21.1.el8_8 Oracle America
kernel-uek-5.4.17-2136.322.6.2.el8uek   Oracle America
  1. Verifica los repositorios habilitados, verás que han sido reemplazados por los de Oracle Linux.
yum repolist
repo id           nombre del repo
ol8_UEKR6         Última Versión del Núcleo Empresarial Irrompible 6 para Oracle Linux 8 (x86_64)
ol8_appstream     Oracle Linux 8 Application Stream (x86_64)
ol8_baseos_latest Oracle Linux 8 BaseOS Último (x86_64)

Conclusión

Usando el script de migración, puedes ver que es muy fácil cambiar de CentOS a Oracle Linux. La parte más problemática es el trabajo de verificación preliminar. Además, aunque no se explicó en el texto principal, asegúrate de hacer un respaldo antes de ejecutarlo.

Resumen

  • El soporte de CentOS está terminando pronto, por lo que necesitas migrar rápidamente.
  • Oracle Linux es un objetivo de migración probable
  • El script de migración centos2ol.sh facilita el cambio de CentOS a Oracle Linux.
  • El tiempo de migración es de aproximadamente 10 a 60 minutos por servidor. Depende del número de paquetes instalados, el rendimiento del servidor y la velocidad de la línea.
  • El script tiene algunas limitaciones, como poder conectarse a repositorios de internet.

La industria de clones de RHEL ha estado en turmoil desde finales de 2020, pero en 2023, hay otro alboroto. Red Hat había liberado previamente el código fuente de RHEL, pero ha anunciado que no se hará público en el futuro (ver el enlace a continuación). En respuesta, algunos proveedores han anunciado contramedidas. Oracle no solo ha estado desarrollando Oracle Linux durante muchos años, sino también Solaris, por lo que puedes sentirte seguro en esta área.

Publickey!: “Oracle, SUSE y CIQ, el principal patrocinador de Rocky Linux, establecen la ‘Asociación de Linux Empresarial Abierto’ para lanzar Linux compatible con RHEL con errores”

Publickey!: “Red Hat critica a los proveedores de sistemas operativos clonados, diciendo ‘si solo reconstruyes el código sin agregar valor, es una amenaza para el código abierto'”