ant

ACTUALIZACIÓN DE SOFTWARE
4.7

sig

4.7 Actualizando e Instalando Nuevo Software

Otra tarea del administrador de sistemas es la actualización e instalación de nuevo software. La comunidad Linux es muy dinámica. Las versiones nuevas del núcleo aparecen cada pocas semanas, y otros programas se actualizan casi tan a menudo. Por esto, los nuevos usuarios de Linux sienten a menudo la necesidad de actualizar sus sistemas constantemente para mantener el paso de los cambios. No sólo esto no es necesario, sino que es una perdida de tiempo. Para mantenerse al día de todos los cambios del mundo Linux, debería utilizar todo su tiempo actualizando en vez de usando su sistema.

Pero entonces, ¿cuando se debe actualizar?. Alguna gente piensa que se debe actualizar cuando se libera una nueva versión de distribución. Muchos usuarios Linux reinstalan completamente sus sistemas con la nueva versión de una distribución (con un kernel más avanzado), cada vez. Esto, también, es una perdida de tiempo. En general, los cambios de las versiones de cada distribución son pequeños. Bajarse y reinstalar 3 discos cuando solo ha cambiado un 10% del software es, por supuesto, inútil.

La mejor forma de actualizar su sistema es haciéndolo a mano: actualizando sólo aquellos paquetes de software que sepa que hay que actualizar. Esto asusta a un montón de gente: quieren saber que actualizar y como, y que se romperá si no actualizan.

Para tener éxito con Linux, es importante superar los temores del "hágalo usted mismo" que es lo que Linux es, a fin de cuentas.

De hecho, una vez que tenga su sistema trabajando y todo el software correctamente configurado, la reinstalación de una nueva versión no dudará en limpiar toda la configuración y todo estará roto otra vez, igual que la primera vez que instaló su sistema. Volver atrás de esta forma no es necesario todo lo que se necesita es algún conocimiento acerca de como actualizar el sistema y de cómo hacerlo bien.

Se encontrará con que cuando actualice un componente de su sistema, no tienen por que fallar los demás. Realmente, la actualización insensata para "mantenerse en la ola" no es tan importante. Esto no es MS-DOS o Microsoft Windows. No hay ninguna razón importante para ejecutar la versión más reciente de todo el software. Si encuentra que desea o necesita funciones de una versión nueva, entonces actualice. Si no, no lo haga. En otras palabras, actualice solo lo que tenga que hacerlo y cuando tenga que hacerlo. No actualice sólo por el mero hecho de actualizar. Hacerlo sólo gastaría un montón de tiempo y esfuerzo intentando mantenerse al día.

El software más importante para actualizar en su sistema es el núcleo, las librerias y el compilador gcc. Estas son las tres partes esenciales de su sistema, y en algunos casos cada uno depende de las otras para que todo funcione bien.

La mayor parte del resto del software de su sistema no necesita ser actualizado periódicamente.

4.7.1 Actualizando el núcleo

Actualizar el núcleo es simplemente asunto de coger los fuentes y compilarlos uno mismo. Debe compilar el núcleo por si mismo para poder activar o desactivar ciertas funciones, o para configurar su máquina para ajustarla a determinados elementos Hardware. El proceso es casi indoloro.

Los fuentes del núcleo pueden obtenerse de cualquiera de los servidores FTP de Linux. En sunsite.unc.edu, por ejemplo, los fuentes del núcleo se encuentran en /pub/Linux/kernel. Las versiones del núcleo se numeran utilizando un número de versión y un nivel de "parche". Por ejemplo, la versión de nucleo 2.2, nivel de parche 4 es nombrada como 2.2.pl4, o simplemente 2.2.4

Los fuentes del núcleo se presentan en un fichero tar comprimido con gzip. Por ejemplo, el fichero conteniendo los fuentes del nucleo 2.2.4 es linux-2.2.4.tar.gz.

Se desempaqueta este fichero tar desde el directorio /usr/src ;esto crea el directorio /usr/src/Linux que contiene los fuentes del núcleo. Se debe borrar o cambiar de nombre el directorio /usr/src/Linux existente antes de desempaquetar la nueva versión.

Una vez que se han desempaquetado los fuentes, llega el proceso de compilación del nuevo núcleo. Hay que advertir, que para poder compilar el núcleo, se debe tener gcc y g++, compiladores C y C++, instalados en el sistema. Puede necesitar tener la versión más reciente de estos compiladores.

Para compilar el núcleo os voy a presentar un caso real. En mi ordenador tengo la versión del kernel 2.4.20-2 (versión 2 de compilación del núcleo 2.4.20). Voy a volver a compilar este núcleo generando una tercera versión del mismo, la 2.4.20-3 Para obtener información del núcleo actualmente en funcionamiento podemos usar el comando uname :
# uname -a
En el directorio /boot existen varios ficheros importantes :
vmlinuz-2.4.20-2 que es el núcleo actual
System.map-2.4.20-2 que es la tabla de símbolos del sistema.
config-2.4.20-2 que es un fichero con infomación sobre la configuración del núcleo.
En el directorio raíz tendremos un enlace al núcleo actual denominado /vmlinuz.

A continuación voy a situarme en el directorio donde estan almacenados los ficheros fuente del núcleo actual mediante
# cd /usr/src
En este directorio tenemos los ficheros fuente originales, contenidos en linux-2.4.20.tar.gz.. En caso de que fuéramos a realizar la primera compilación de los fuentes, extraeríamos el contenido de este fichero .tar mediante los siguientes comandos:
# gunzip linux-2.4.20.tar.gz
# tar xvf linux-2.4.20.tar
Los ficheros extraídos por el comando tar para la primera compilación del núcleo se despliegan en un directorio llamado:
/usr/src/kernel-source-2.4.20
O bien creamos un enlace directo /usr/src/Linux o cambiamos el nombre de ese directorio por /usr/src/Linux (se pueden tener varios directorios de fuentes de diversas series del kernel; para conocer cual es el directorio del kernel actual es bueno que éste se llame siempre de una misma forma por eso lo anterior comentado).

He comentado que iva a generar una tercera versión, para lo cual voy a introducir una pequeña modificación en el fichero Makefile del directorio /usr/src/Linux. Concretamente vamos a modificar el contenido de la variable "EXTRAVERSION" a "-3", editando dicho fichero. (vi Makefile por ejemplo)

Ahora procederemos a compilar el núcleo siguiendo esta receta: (asegurese de estar en /usr/src/Linux.) :
# make menuconfig
# make clean
# make dep #reconstruye dependencias
# make bzImage # compila el nuevo núcleo
# make modules #compila módulos del núcleo
# make modules_install
Si no funcionase menuconfig (tal vez no tenga las X windows ) intente los siguientes comandos make xconfig o make config. Este comando le irá preguntando por un número de opciones de configuración, como puede ser qué tipos de sistemas de ficheros desea que soporte el nuevo núcleo.

El comando make dep asegurará que se cumplen todas las dependencias del fuente. Este es un paso muy importante. Finalmente, se está listo para compilar el núcleo. El comando make bzImage compilará el núcleo y dejará la nueva imagen del núcleo en el fichero /usr/src/Linux/arch/i386/boot/bzImage. Si la fecha y hora de dicho fichero no coinciden con la actual, el proceso de compilación no ha ido bien.

Para terminar, tenemos que instalar el núevo kernel. Para ello siga otra receta:
# cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.20-3
# cp System.map /boot/System.map-2.4.20-3
# cp .config /boot/config-2.4.20-3

# cd /boot
# rm System.map
# ln -s System.map-2.4.20-3 System.map
# rm /vmlinuz
#ln -s /boot/vmlinuz-2.4.20-3 /vmlinuz
Puedes tener varios núcleos en tu sistema, y arrancar el que necesites en cada momento. Basta configurar el cargador de arranque (por ejemplo LILO o grub) para ello.

Existen otras formas para modificar el núcleo. Podemos modificar parámetros ajustables del núcleo a través de ficheros en /proc (p.e. file-max, inode-max...)o podemos también cargar nuevos módulos en un núcleo existente:
# cd /lib/modules/versiónDELnúcleo
#insmod <modulo>.o

4.7.2 Actualizando las librerias

Como se mencionó antes, la mayor parte del software del sistema está compilado para que utilice las librerias compartidas, que contienen sub-rutinas comunes compartidas entre distintos programas. Si le aparece el mensaje Incompatible Library version cuando se intenta ejecutar un programa, entonces necesita actualizar a la versión de las librerias que el programa requiere. Las librerias son compatible-ascendentes; esto es, un programa compilado para utilizar una versión antigua de las librerias, debe trabajar con la nueva versión de las librerias instalada. Sin embargo, lo contrario no es cierto. La ultima versión de las librerias se puede encontrar en los servidores FTP de Linux. En sunsite.unc.edu, están disponibles en /pub/Linux/GCC. Los ficheros de "version" que se encuentran ahí deben explicar que ficheros se necesita obtener y como instalarlos.

Rápidamente, se deben coger los ficheros image-version.tar.gz y inc-version.tar.gz donde versiÓn es la version de las librerias a instalar, por ejemplo 4.4.1. Son ficheros tar comprimidos con gzip; el fichero image contiene las imagenes de las librerias a instalar en /lib y /usr/lib. El fichero inc contiene los ficheros de inclusión a instalar en /usr/include.

El fichero release-version.tar.gz debe explicar el método de instalación detalladamente (las instrucciones exactas varían para cada version). En general, se necesita instalar los ficheros de librerias .a y .sa en /usr/lib. Estas son las librerias utilizadas en tiempo de compilación.

Además, los ficheros imagen de las librerias compartidas libc.so.version se instalan en /lib. Estas son las imagenes de las librerias compartidas que son cargadas en tiempo de ejecución por los programas que utilizan las librerias. Cada librería tiene un enlace simbólico utilizando el numero de version mayor de la librería en /lib .Por ejemplo, la versión 4.4.1 de la librería libc tiene un numero de version mayor de 4. El fichero que contiene la librería es libc.so.4.4.1. Existe un enlace simbólico del nombre libc.so.4 en /lib apuntando a este fichero.

Por ejemplo, cuando se actualiza de libc.so.4.4 a libc.so.4.4.1, necesita cambiar el enlace simbólico para apuntar a la nueva version.

* Es muy importante que se cambie el enlace simbólico en un solo paso, como se indica mas abajo. Si de alguna forma borrase el enlace simbólico libc.so.4, los programas que dependen del enlace (incluyendo utilidades básicas como ls y cat) dejarán de funcionar. Utilice el siguiente comando para actualizar el enlace simbólico libc.so.4 para que apunte al fichero libc.so.4.4.1: # ln -sf /lib/libc.so.4.4.1 /lib/libc.so.4 Se necesita también cambiar el enlace simbólico libm.so.version de la misma forma. Si se esta actualizando a una version diferente de las librerias, sustituya lo anterior con los nombres adecuados. La nota de la version de la librería debe explicar los detalles. (Ver sección 3.10 para mas información acerca de los enlaces simbólicos).

4.7.3 Actualizando gcc

El compilador de C y C++ gcc se utiliza para compilar software en su sistema, siendo el más importante el núcleo. La versión más reciente de gcc se encuentra en los servidores FTP de Linux. En sunsite.unc.edu se encuentra en el directorio /pub/Linux/GCC (junto con las librerias). Debe existir un fichero release para la distribución gcc detallando que ficheros se necesitan obtener y como instalarlos.

4.7.4 Actualizando otro software

La actualización de otro software solo suele consistir en obtener los ficheros apropiados e instalarlos. Mucho software para Linux se distribuye como ficheros tar comprimidos con gzip, incluyendo, ya sea fuentes, ejecutables o ambos. Si los ejecutables no se incluyen con la version, puede ser necesario recompilarlos uno mismo; normalmente esto significa teclear make en el directorio que tiene los fuentes.

Insistimos, normalmente no es una buena idea el actualizar reinstalando desde cero la version mas reciente de una distribucion. Si se reinstala de esta forma, no lo dude, arruinara su instalación actual. La mejor forma de actualizar software es por partes; esto es, si hay un programa que se usa a menudo y tiene una nueva versión, actualícelo. Si no, no se moleste. Regla practica: Si no tiene nada roto, no lo repare. Si su software actual funciona, no hay motivo para actualizar.