Actualización en línea de RedHat 9 (RH9) a centos

El otro día un cliente mío tenía un problema en una máquina que le instalé hace unos dos años si mal no recuerdo. Ésta es la parte buena de linux, sencillamente la máquina funcionó haciendo su labor de servidor de mensajería por dos años. Pero algo ocurrió con el spamassassin (versión 2.54 creo que tenía) que llenó el disco.

Entré y ví lo viejo del software y le propuse actualizarle con un clon de RedHat para que tuviera algunos años más de actualizaciones, me dijo que ok.

Ahora, me daba pereza ir hasta donde él. Podía ir, pero tenía otras cosas que hacer, así que me dediqué a probar una forma de actualizar el RH9 a centos 3.6 pero vía internet, sin tener que estar donde el cliente ni insertar Cds

Éste método es válido para actualizar ya sea la versión 3.6 o las subsiguientes versiones de centos que puedan salir (3.7, 3.8, etc), solamente es de bajar los 2 rpm que sugerimos para 3.6 pero para las siguientes versiones que hayan.

Pasos previos

Lo primero a realizar es una pequeña revisión de seguridad, para determinar que no tengamos ningún troyano ni rootkits ni nada malicioso instalado en la máquina. Esto es importante porque normalmente los rootkits alteran el filesystem, ponen muchos archivos imborrables, que aunque podemos borrarlos a la larga, esto es un impedimento grave para continuar, porque si tenemos una máquina comprometida, a la final la actualización que hagamos muy probablemente termine contaminada por el caballo de troya o rootkit que teníamos previamente.

Si al acabar la revisión de seguridad nos indican que hay troyanos o algún malicioso por ahí metido, sugiero que no se proceda con la actualización y se instale desde cero el centos, así nos quitamos ese problema.

Sugerimos que use uno o los dos de estas variantes:

chkrootkit.org

ó

rootkit.nl


una vez instalado uno de ellos los ejecutamos:

chkrootkit -q

rkhunter --update
rkhunter -c

Y verificamos que no haya problemas en nuestro sistema.

De no haberlos, procedemos al siguiente paso que es preparar los paquetes del sistema actual para ser actualizados con yum.

Eliminación de paquetes del sistema actual

Bien, ahora hay que eliminar todo el contenido innecesario para evitar una actualización larga y demorada. Yo por lo menos elimino todo lo que tenga que ver con estos paquetes, que contenga estos nombres:

XFree86
gnome
mozilla
devel
font
gcc
cpp
java
fam
fbset
gstreamer

esto se hace por ejemplo con la cadena de comandos:

rpm -qa|grep gnome|xargs rpm -e

Posiblemente dará algunos errores de dependencia, hay que primero eliminar esas dependencias:

rpm -e paquete1 paquete2 ... paqueteX

después repetir:

rpm qa|grep gnome|xargs rpm -e

Si sigue diciendo de dependencias volver a eliminar esas primero y así hasta eliminar todo gnome

Proceder igual con XFree (rpm -qa|grep Xfree|xargs rpm -e), con mozilla, con los *devel*, cvs, r* (rsh, rlogin, etc) y con los *font*, yo también borro los gcc, cpp y demás utilerías para compilar como yacc, bison, flex, la idea es lograr una actualización rápida, después se pueden instalar nuevamente estos paquetes con calma.

Igual si consideras que algún otro paquete está de más, bórralo, recuerda que la actualización será online y que mientras más tenga que actualizar, más demorará en realizarse, por lo que repetimos e insistimos que debes eliminar los paquetes que estén de más en el sistema.

Esto quitará los paquetes del ambiente gráfico pues no lo uso para los servidores, puedes intentar actualizar con estos paquetes encima (XFree, gnome, kde, fam, etc) pero no te podré ayudar si algo falta. Prefiero quitarlos pues no hacen falta en un servidor. Además ya habremos quitado todas las herramientas de desarrollo que consumen un buen espacio y nos demoraría la actualización.

reconstruir la BD de rpm:
rpm --rebuilddb

Ahora que hemos eliminado paquetes innecesarios, podemos proceder a instalar el yum y a actualizar el sistema

Instalando yum y otras opciones necesarias para comenzar

Bueno, ya hemos hecho la mayor parte, y les aseguro que sí, en las dos páginas anteriores hemos resumido el 95% del trabajo de actualización.

Habrán personas que querrán venir directamente a ésta sección y comenzar la actualización sin oir, leer y analizar lo que hemos puesto en las anteriores, pero les repito a esas personas que apliquen lo que se pide en las dos secciones anteriores si no quieren fracasar miserablemente actualizando el sistema.

Ahora procedamos a hacer unos pasitos muy sencillos:

* Instalemos la clave GPG del centos, esto nos permitirá posteriormente que el yum pueda certificar que los paquetes que bajemos están correctamente firmados por sus autores:

rpm --import http://mirror.trouble-free.net/centos/RPM-GPG-KEY-CentOS-3

Si este mirror no funciona, usen otro mirror que tenga las claves GPG de centos, todos las tienen (www.centos.org para más información sobre mirrors)

* Bajar los rpm del centos-release y del yum, son los dos unicos paquetes que tendremos que instalar manualmente antes de proceder a la actualización.

wget http://mirror.trouble-free.net/centos/3.6/os/i386/RedHat/RPMS/centos-release-3-6.1.i386.rpm
wget http://mirror.trouble-free.net/centos/3.6/os/i386/RedHat/RPMS/yum-2.0.8-1.centos.7.noarch.rpm

Proceder a instalar ambos paquetes:
[root@mail root]# rpm -Uvh centos-release*.rpm yum*.rpm

Preparing... ########################################### [100%]
1:yum ########################################### [ 50%]
2:centos-release ########################################### [100%]

Listo, ahora procedamos a verificar las actualizacionesy a instalarlas de aceptarlas:

yum update

Los siguientes pasos se nos demorarán un poco, en dependencia del canal que tengan, este cliente tiene 64kbs y demoró unas 20 horas en total.

Hay que esperar un buen rato en lo que baja los encabezados de todos los paquetes de centos, al acabar verificará qué paquetes tenemos instalado y con cuáles los actualizará, y nos dará una lista de dependencias a instalar para que aprobemos (con y)

Si algo falla durante la ejecución del yum hay que ver quién y por qué falla y arreglar el problema, normalmente lo que hago es quitar el paquete que está fallando y si posteriormente lo requiriera, lo instalaría después de actualizado el sistema.

En ésta actualización que hice, no falló nada pues al eliminar decenas de paquetes (ver secciones anteriores de este documento) disminuí la posibilidad de interferencias o fallos entre ellos.

Bien, cuando acabe de bajar los encabezados, dirá algo así:
imlib-devel-1-1.9.13-13.4 100% |=========================| 4.0 kB 00:00
elinks-0-0.4.2-7.i386.hdr 100% |=========================| 3.8 kB 00:00
.
.
freetype-devel-0-2.1.4-4. 100% |=========================| 7.7 kB 00:02
dejagnu-1-1.4.2-10.noarch 100% |=========================| 8.7 kB 00:05
Resolving dependencies
.Dependencies resolved
I will do the following:
[update: lockdev 1.0.1-1.2.i386]
[update: openssh-clients 3.6.1p2-33.30.4.i386]
.
.
.
[update: pam 0.75-62.i386]
[update: slang 1.4.5-18.i386]
[update: ash 0.3.8-16.i386]
[update: diffutils 2.8.1-8.i386]
[update: sendmail-cf 8.12.11-4.RHEL3.1.i386]
[update: php-imap 4.3.2-23.ent.i386]
[update: openssl 0.9.7a-33.15.i386]
[update: freetype 2.1.4-4.0.i386]
I will install/upgrade these to satisfy the dependencies:
[deps: rpm-libs 4.2.3-10.i386]
[deps: beecrypt 3.0.1-0.20030630.i386]
[deps: ethtool 1.8-3.3.i386]
[deps: bind-libs 20:9.2.4-7_EL3.i386]
[deps: laus-libs 0.1-66RHEL3.i386]
[deps: tzdata 2004e-1.EL.noarch]
Is this ok [y/N]: y

Será una lista bien larga, pues actualizará TODOS los rpm que encuentre en el sistema. Nos está indicando que procederá a instalar esta cantidad de paquetes, que si estamos de acuerdo, si no están de acuerdo (¿y si no estás de acuerdo por qué llegastes hasta aquí?) presionan n y listo, no actualizan nada, sin embargo, no hemos venido tan lejos para estar en desacuerdo, ahora presionamos y y procedemos a bajar los paquetes.

Hasta este momento no ha pasado nada que no se pueda arreglar en el sistema, sencillamente ha bajado los encabezados del yum para tener una lista de paquetes a instalar, más nada. Y es más, ahora es que comienza la demora real, demorará VARIAS horas en dependencia del tipo de red que tengamos hasta bajar todos los paquetes los cuales una vez bajados serán instalados entonces.

El yum comenzará ahora a bajar cada paquete y darte tiempos estimados para que acabe de bajarlo, una vez bajado no es instalado, sino cuando todos los que tocan instalar estén abajo:

Downloading Packages
Getting lockdev-1.0.1-1.2.i386.rpm
lockdev-1.0.1-1.2.i386.rp 100% |=========================| 12 kB 00:02
Getting openssh-clients-3.6.1p2-33.30.4.i386.rpm
openssh-clients-3.6.1p2-3 2% | | 8.0 kB 01:04 ETA
.
.
.

A la final de las varias horas, veremos un resumen de que pudo instalar todo. Si algo fallara, proceder a resolver el conflicto, yo lo solucionaría temporalmente eliminando el paquete o paquetes conflictivos hasta lograr actualizar, una vez actualizado ahi los podría instalar de nuevo (los paquetes que puedan dar conflictos).

Al finalizar la labor de actualización dejará todito actualizado excepto el kernel, por alguna razón lo tenemos que instalar manualmente:

yum -y install kernel

Revisemos /etc/grub.conf y verifiquemos que el sistema arranca con el default kernel del centos (veremos al menos dos kernels instalados, el nuevo de Centos y el viejo de redhat 9). Grub cuenta desde 0, es decir, si el primer kernel que aparece en la lista es el de centos debemos asegurarnos que default esté en 0, para que así arranque el kernel de centos.

Ahi podemos proceder a reiniciar y esperemos que todo les vaya bien.

Yo reinicié remotamente el sistema y me trabajó muy bien, es más, antes de reiniciar me aseguré que los servicios fundamentales corrieran: service squid restart; service httpd restart; service sendmail restart; etc, etc

Si desea que le ayudemos a actualizar remotamente un sistema por favor contáctenos para ayudarle. Es una labor bien pesada que algunas personas requieren pero no tienen la experiencia ni el tiempo para hacerlo, nosotros le podemos ayudar a actualizar su sistema.

Conclusiones:

1. Es factible, totalmente fácil de actualizar de redhat 9 a un clon de redhat enterprise linux (Centos 3 en este caso).
2. Toma un tiempo el planificar la actualización, eliminar paquetes innecesarios y aunque parezca una pérdida de tiempo es el corazón de la actualización.
3. Deben analizarse cuestiones bien importantes si usted tiene paquetes adicionales a redhat como es oracle, informix, tomcat, algún panel de control como cpanel, ensim, etc, pues estos pueden requerir de trabajo adicional para realizar la actualización. Todos deben trabajar para Centos, pero los binarios seguro han variado, por lo que sugiero más bien desinstalar cualquier aplicación que no sea nativa de redhat y posterior a la actualización proceder a reinstalarla para redhat enterprise (centos es un clon y todo lo de redhat enterprise trabaja en él).

eperez – Thu, 2006 – 01 – 26 17:23