Actualizando CentOS a una release concreta

Ya hacía bastante tiempo que no paraba por aquí para escribir un artículo, así que hoy me voy a tomar mi tiempo y voy a escribir acerca de CentOS.

¿Y por qué sobre CentOS? Pues resulta que hoy trabajando en Yaco Sistemas, mi
compañero @sepu66 necesitaba varias máquinas virtuales con CentOS
5.6, aunque la template de la que disponía era de CentOS 5.5.

Fácil, pensé, creo la máquina virtual con CentOS 5.5 y actualizo la
distribución con yum update:

[root@test ~]# yum update

Y claro, pasados unos minutos actualizando paquetes, compruebo la release de la distribución y, para mi sorpresa, observo que se ha actualizado a la última release de CentOS 5, es decir, a CentOS 5.7:

[root@test ~]# cat /etc/issue

CentOS release 5.7 (Final)
Kernel \r on an \m

FAIL!, pensé (últimamente pienso mucho). Esto ya lo había yo solucionado antes, pero no lo recordaba bien. Es una de esas tareas que haces una vez en muchos meses y que al final terminas olvidando, así que por eso he decidido hacer un volcado de conocimiento en este artículo :-)

Tras un rato buscando alguna solución en internet, sin éxito por cierto, ya que todos los artículos que encontraba eran acerca de "Cómo actualizar CentOS de 5.4 a 5.5" o "Cómo actualizar CentOS de 5.5 a 5.6", en resumen, todos los artículos que encontraba eran actualizaciones a la release inmediatamente superior, así que se resumían en ejecutar yum update y listo... Pero mi idea era decidir yo a qué release concreta a actualizar.

Para solucionar este tema, volví a regenerar la máquina virtual con CentOS 5.5 y empecé a modificar la configuración de los repositorios.

Configurando los repositorios

En CentOS normalmente los repositorios se encuentran configurados en ficheros que terminan en .repo en el directorio /etc/yum.repos.d/. En mi caso los repositorios configurados por defecto se encuentran en el fichero /etc/yum.repos.d/CentOS-Base.repo, así que lo primero que hice fue editar dicho fichero y deshabilitar los repositorios por defecto, añadiendo la siguiente linea en cada parte de configuración de cada repositorio:
enabled=0

Dicha linea indica a yum que el repositorio en cuestión se
encuentra deshabilitado y no queremos que se utilice. Otra forma de
deshabilitar los repositorios por defecto sería eliminando el fichero
/etc/yum.repos.d/CentOS-Base.repo, pero no me parece un solución muy elegante.

Hecho esto, creé un nuevo fichero llamado /etc/yum.repos.d/CentOS-Vault.repo en el que añadí lo siguiente:

#---- Packages previously released as 5.6, and its updates
[C5.6-base]
name=CentOS-5.6 - Base
baseurl=http://vault.centos.org/5.6/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
enabled=1

[C5.6-updates]
name=CentOS-5.6 - Updates
baseurl=http://vault.centos.org/5.6/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
enabled=1

[C5.6-extras]
name=CentOS-5.6 - Extras
baseurl=http://vault.centos.org/5.6/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
enabled=1

¿Dónde está el truco? El secreto se encuentra en el dominio utilizado en la
URL, vault.centos.org que se trata de un sitio perteneciente a
CentOS donde se pueden encontrar los paquetes de releases antiguas de CentOS.
Destacar como segundo truco que he fijado la versión de la release a 5.6 en la URL, por tanto esta distribución no pasará a una release posterior.

Importante también marcar los repositorios como activos especificando:

enabled=1

Listando los repositorios disponibles

Una vez configurado los repositorios a utilizar, podemos listarlos ejecutando yum repolist:
[root@test ~]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                                                                     repo name
C5.6-base                                                                   CentOS-5.6 - Base
C5.6-centosplus                                                             CentOS-5.6 - Plus
C5.6-extras                                                                 CentOS-5.6 - Extras
C5.6-updates                                                                CentOS-5.6 - Updates

Actualizando la distribución

Hecho esto, ya sólo nos queda forzar la actualización del sistema completo:
[root@test ~]# yum update

y pasados unos minutos actualizando los paquetes del sistema, deberíamos tener nuestra distribución en la versión deseada, en mi caso, CentOS 5.6:

[root@test ~]# cat /etc/issue
CentOS release 5.6 (Final)
Kernel \r on an \m

Espero que os sea de utilidad, a mi seguro que no se me vuelve a olvidar :-D
Un saludo!