Cómo subir de versión de Centos 7 a Centos 8

Tal y como indica el nombre de la entrada, aprendemos a subir la versión de Centos 7 a Centos 8. Para ello nos serviremos de la consola de comandos en esta popular distribución comunitaria para servidores, patrocinada por la compañía Red Hat.

Antes de continuar, ¿qué tal estáis? La verdad es que estos meses están siendo bastante duros, el confinamiento y la marcha de nuestros seres queridos, está siendo una prueba de fuego para toda la humanidad. Espero que estéis bien, desde este humilde blog os envío toda la fuerza y todo el ánimo. Pensad, que tras una larga noche siempre llega el amanecer.

Preparar el sistema para el upgrade

Primero de todo debemos habilitar, si no lo tenemos ya, el repositorio, cosa de la que ya hablamos en una entrada: Habilitar repositorio epel-release En este caso lo haríamos de la siguiente manera:

yum install epel-release -y

Además tenemos tener instaladas las siguientes herramientas para el gestor de paquetes YUM

yum install yum-utils -y

Y resolvemos los paquetes RPM

yum install rpmconf -y
rpmconf -a

Si no conoces la herramienta rpmconf, esta se encarga de busca archivos .rpmnew, .rpmsave y .rpmorigfiles y nos pregunta qué hacer con ellos: mantener la versión actual, utilizar la versión anterior o consultar con diff.

A continuación realizamos una limpieza de los paquetes que no necesitamos:

package-cleanup --leaves
package-cleanup --orphans

Instalar el gestor depaquetes DNF

YUM es un gestor de paquetes un poco «viejuno» y ha sido superado por el vitaminado DNF, por lo que lo debemos instalar en el sistema, ya que en la versión 7 no está disponible por defecto. Lo haremos así:

yum install dnf

Aunque podrían subsistir los dos gestores, lo adecuado es desinstalar YUM:

dnf -y remove yum yum-metadata-parser
rm -Rf /etc/yum

Subir de versión Centos 7 a Centos 8

Ahora sí, vamos a subir de versión el sistema, de Centos 7 a Centos 8, de la siguiente manera:

dnf upgrade -y

A continuación habilitamos los repositorios de Centos 8

dnf install \
http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/centos-repos-8.2-2.2004.0.1.el8.x86_64.rpm \
http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/centos-release-8.2-2.2004.0.1.el8.x86_64.rpm \
http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/centos-gpg-keys-8.2-2.2004.0.1.el8.noarch.rpm

Hacemos lo propio con el repositorios EPEL, que lo actualizamos:

dnf upgrade -y epel-release

Construimos de nuevo la caché:

dnf makecache

Después de actualizar el repositorio EPEL, eliminamos todos los archivos temporales.

dnf clean all

Eliminamos todas las versiones actuales del kernel:

rpm -e `rpm -q kernel`

Lo propio con los paquetes conflictivos:

rpm -e --nodeps sysvinit-tools

Ahora sí, actualizamos:

dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync

NOTA:En esta parte, en los últimos tiempos a veces me he encontrado con conflictos en la actualización, con los paquetes de Python, para solventarlo:

rpm -e --justdb python36-rpmconf-1.0.22-1.el7.noarch rpmconf-1.0.22-1.el7.noarch
rpm -e --justdb --nodeps python3-setuptools-39.2.0-10.el7.noarch
rpm -e --justdb --nodeps python3-pip-9.0.3-7.el7_7.noarch
rpm -e --justdb --nodeps iptables-1.4.21-34.el7.x86_64
rpm -e --justdb --nodeps vim-minimal
# Y después
dnf upgrade --best --allowerasing rpm

Ahora sí, ya podemos continuar con la instalación.

Instalamos la última versión del core de Centos 8

dnf install -y kernel-core

Instalamos los paquetes mínimos del sistema:

dnf -y groupupdate "Core" "Minimal Install" \
--allowerasing --skip-broken

Una vez hecho esto, reiniciamos:

reboot

Al volver acceder podemos comprobar la versión del sistema:

cat /etc/redhat-release

Con el resultado:

[root@servcentosforeman ~]# cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)
Y eso es todo, espero que esta entrada os sea de utilidad en algún momento. Nos vamos leyendo.
Fuentes consultadas:

Fix rpmdb: Thread died in Berkeley DB library