Actualizado el sábado, 18 enero, 2020
Actualizar CentOS 7 a CentOS 8.
En el articulo de hoy vemos como actualizar CentOS 7 a CentOS 8, pero ojo ten cuidado, estas instrucciones no son oficiales y tan solo están basadas en mi experiencia personal.
Tiene problemas conocidos con las iso de CentOS 7 que instalan los proveedores de vps y dedicados, ten en cuenta que suelen ser instalaciones modificadas para que se adapten correctamente a sus maquinas.
Lo que pretendemos es movilizar a la comunidad para que vean la luz unas instrucciones reales y fiables en cualquier entorno de instalación. La actualización que resulto exitosa (con algún fallo puntual fácil de corregir) se baso en un CentOS 7.7.1908 minimal que descargamos desde un mirror oficial.
No sigas estos pasos en servidores en producción, solo a modo de estudio y ensayo.
Actualizar CentOS 7 a CentOS 8
Comenzamos el upgrade instalando el repositorio epel.
yum install epel-release -y
Verificamos la versión de CentOS 7 que tenemos instalada.
cat /etc/redhat-release
imagen de ejemplo…
CentOS 7.7
Instalamos las herramientas yum-utils.
yum install yum-utils
Ahora resolvemos los paquetes rpm con la herramienta rpmconf.
yum install rpmconf rpmconf -a
El sistema te preguntara si quieres mantener los archivos originales, o actualizarlos. Te recomiendo que mantengas los originales, pero claro, depende de tu sistema.
imagen de ejemplo…
Upgrade CentOS 7 to CentOS 8
Borramos los paquetes huérfanos e innecesarios.
package-cleanup --leaves package-cleanup --orphans
DNF es el administrador de paquetes predeterminado en CentOS 8, lo instalamos.
yum install dnf
Realmente no sería necesario, nosotros en nuestro entorno de pruebas hemos eliminado el administrador de paquetes YUM.
dnf -y remove yum yum-metadata-parser rm -Rf /etc/yum
Actualizamos el sistema.
dnf upgrade
Llego el momento… instalamos el paquete CentOS 8.
dnf -y upgrade http://mirror.bytemark.co.uk/centos/8/BaseOS/x86_64/os/Packages/centos-release-8.0-0.1905.0.9.el8.x86_64.rpm
Cuando termine la operación, actualizamos el epel.
dnf -y upgrade https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
Eliminamos los archivos innecesarios.
dnf clean all
Ahora el kernel obsoleto de CentOS 7.
rpm -e `rpm -q kernel`
También otros paquetes que entraran en conflicto.
rpm -e --nodeps sysvinit-tools
Iniciamos la actualización.
dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync
Necesitamos el kernel del nuevo CentOS 8.
dnf -y install kernel-core
El paquete minimal de CentOS 8.
dnf -y groupupdate "Core" "Minimal Install"
Al terminal de instalar el paquete minimal, ya tenemos actualizado nuestro sistema a CentOS 8. Para verificar que efectivamente la instalación fue un éxito, ejecuta el siguiente comando.
cat /etc/redhat-release
ejemplo de salida correcta…
CentOS 8.0
Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.
Gracias por tu artículo. Lo he usado para actualizar con éxito una de mis máquinas virtuales.
Te dejo aquí algunas notas adicionales sobre lo que ha sido mi experiencia, amodo de aviso para navegantes.
Primero de todo, antes de tratar de seguir los pasos de tu artículo, lo primero que he hecho es deshabilitar todos los repositorios excepto los de CentOS y el de EPEL.
Después he ejecutado:
$ yum -y update
para tener la máquina en CentOS Linux release 7.7.1908 que es el punto de partida de tu artículo.
Al ejecutar el comando:
$ dnf -y upgrade http://mirror.bytemark.co.uk/centos/8/BaseOS/x86_64/os/Packages/centos-release-8.0-0.1905.0.9.el8.x86_64.rpm
Me he encontrado con el problema de que la Releas 8.0.0 ya no está disponible. En su lugar he usado un mirror mas cercano y la release actual 8.1.1.1911
Adicionalmente he tenido que incluir otros dos paquetes con las dependencias que necesita el anterior. Es decir, he ejecutado:
$ dnf -y upgrade http://mirror.librelabucm.org/CentOS/8/BaseOS/x86_64/os/Packages/centos-gpg-keys-8.1-1.1911.0.8.el8.noarch.rpm http://mirror.librelabucm.org/CentOS/8/BaseOS/x86_64/os/Packages/centos-release-8.1-1.1911.0.8.el8.x86_64.rpm http://mirror.librelabucm.org/CentOS/8/BaseOS/x86_64/os/Packages/centos-repos-8.1-1.1911.0.8.el8.x86_64.rpm
Un par de pasos mas adelante, al ejecutar el comando:
$ rpm -e `rpm -q kernel`
Me ha reportado varios errores por paquetes que tengo instalados y dependen de alguno de los kernels que se van a borrar. Para estos paquetes he usado un comando:
$ rpm -e –nodeps
(En mi caso: hypervvssd hypervfcopyd hypervkvpd lldpad)
El comando:
$ dnf -y –releasever=8 –allowerasing –setopt=deltarpm=false distro-sync
me ha dado varios problemas en el paso del transaction test. Conflictos por dos paquetes que quieren instalar el mismo fichero.
Había conflictos de dos tipos:
1. Conflictos entre un paquete que iba a ser instalado por el comando y un paquete actualmente instalado. Se solucionó usando el comando siguiente para el paquete instalado:
$ rpm -e –nodeps
(En mi caso: pycairo python-inotify)
2. Conflictos entre dos paquetes que iban a ser instalados por el comando dnf. En este caso he excluido uno de ellos:
$ dnf -y –releasever=8 –allowerasing –setopt=deltarpm=false –exclude=python36-six
(En mi caso el conflicto estaba entre python36-six y python3-six)
Gracias por el aporte Carlos, muy bueno.
Buen aporte y solución al tema de las dependencias.
Gracias
Hola, la actualización de centos 7 a 8 afecta a mi website ? lo tengo hecho en joomla 2.5.. gracias por tu respuesta
Si, claro que afecta.