Actualización, instalación y desinstalación de software en Linux, Distribuciones Derivadas de Red Hat, paquetes RPM

|


Introducción.

Una vez que ya ha experimentado con algunos de los mandatos básicos, se encontrará ahora con una pregunta: ¿Cómo actualizo, instalo o desinstalo software? Existen varios métodos que dependerán del formato utilizado para empaquetar los programas. Este documento le proporcionará la descripción de los posibles métodos y algunos ejemplos. Por favor siga el procedimiento al pie de la letra.


La parte teórica.

Antes de continuar, es indispensable se conozca primero el uso y el porque de cada método existente para el manejo del software. De esto se dependerá en adelante para mantener un saludable estado de cualquier sistema GNU/Linux®. Indistintamente del método, todos se deberá de realizar desde la cuenta de root, así que proceda con cuidado.


Manejo de paquetes a partir de archivos RPM®

El formato RPM® es el más utilizado en la actualidad. Tiene como ventaja principal el encargarse de verificar las posibles dependencias o requisitos para la instalación o actualización de un paquete en particular, así como también el verificar si el paquete que se procederá a desinstalar es requerido por otros paquetes presentes en el sistema.

Analizaremos entonces el uso del mandato rpm. Existen dos aplicaciones en el entorno gráfico que utilizan rpm en el trasfondo y que son de muy fácil utilización, son gnorpm y kpackage. Sin embargo es importante que el usuario novicio se familiarice con este mandato para poder entender el funcionamiento de las mencionadas aplicaciones en el entorno gráfico.

Sintaxis
rpm -[opciones] paquete.rpm
Nos limitaremos a abordar solo las opciones más comúnes que un nuevo usuario de Linux® podría necesitar. Si desea ver una descripción completa de las posibles opciones del mandato rpm, consulte el manual escribiendo man rpm en cualquier terminal o consola.

Instalación binarios contenidos en paquetes con formato RPM®.

Los paquetes de este tipo son programas previamente compilados, almacenados y listos para ser instalados en el sistema. Estos paquetes pueden tener las extensiones .i386.rpm para PC compatible con al menos un microprocesador 80386, es decir, cualquier PC de arquitectura Intel® o compatible, .i486.rpm para PC compatible un microprocesador 80486, .i586.rpm para PC compatible con microprocesador 80586, .i686.rpm para PC compatible con microprocesador 80686, .ppc.rpm para Machintosh® PowerPC o .noarch.rpm que puede utilizarse en cualquier arquitectura.

En la práctica, no se preocupe por encontrar paquetes i686 para su PC con microprocesador Intel Pentium III, puede instalar con total seguridad los paquetes para i386. Los paquetes noarch generalmente contiene archivos de texto -guiones para diversas funciones, archivos de configuración o documentación-, imágenes, sonidos, etc., es decir, archivos que trabajan indistintamente en uno u otro sistema.

La sintaxis que se sugiere utilizar en la mayoría de los casos para instalar o actualizar paquetería es la siguiente:

rpm -Uvh paquete.i386.rpm

El utilizar la opción U, que significa Update, a fin de conseguir un proceso limpio, hace que primero se consulte la base de datos de la paquetería instalada, procediendo a desinstalar a continuación la versión anterior e instalando la nueva. Aunque también puede utilizarse la opción i, que significa install, esta no continuará el proceso si existiese en el sistema una versión anterior de dicho paquete.

Desinstalación binarios contenidos en paquetes con formato RPM®.

rpm -e paquete

No requiere especificar el número de versión ni la extensión ya que consulta directamente la base de datos de la paquetería instalada en le sistema y procederá a desinstalar el paquete que lleve dicho nombre.

Instalación a partir de código fuente contenido en paquetes con formato RPM®.

Este procedimiento se aplica a los paquetes denominados SRPM, sobre los cuales seguramente ha leído en los foros y grupos d discusión, y requiere que se encuentren instalados en el sistema los paquetes de desarrollo -los paquetes contenidos en el CDROM de instalación que llevan "-devel-" en el nombre-, ya que el procedimiento implica que se realizará la compilación de programas.

La ventaja que tiene la construcción e instalación paquetería a partir de archivos SRPM es que los paquetes resultantes quedan compilados de forma especial para el sistema Linux® que tengamos instalado. Es de particular ayuda cuando se actualiza, por citar un ejemplo, de LinuxPPP® 5.x a LinuxPPP® 6.x y el usuario se topa con que alguna de sus aplicaciones favoritas simplemente ya no funcionan. Esto se debe a que la diferencia entre las versiones de las bibliotecas compartidas entre una y otra versión de LinuxPPP puede ser demasiada. Las distribuciones basadas sobre Red Hat™ Linux 5.x utilizan, entre otras cosas, libc5, en tanto que las versiones basadas sobre Red Hat™ 6.x hacen uso de Glibc-2.1.x y las versiones basadas sobre Red Hat™ 7.x hacen uso de Glibc-2.2.x.

Estos paquetes SRPM tienen la extensión .src.rpm y se procede sobre estos del siguiente modo:

rpmbuild --rebuild --clean paquete.src.rpm

Esta última línea de mandato coloca un paquete comprimido, normalmente un archivo con extensión .tar.gz o tar.bz2, en /usr/src/redhat/SOURCES y un archivo, conocido como spec, con las especificaciones del paquete en /usr/src/redhat/SPECS. A continuación se descomprime el archivo .tar.gz o tar.bz2 y se inicia la compilación y construcción del paquete RPM® con las especificaciones del spec.

Si al terminar el proceso en la última línea se obtiene + exit 0, solo restará instalar o actualizar con el paquete RPM® que ahora encontraremos, dependiendo de la arquitectura para la que se compiló, en alguno de los subdirectorios de /usr/src/redhat/RPMS.

rpm -Uvh /usr/src/redhat/RPMS/i386/paquete.i386.rpm

Confirmación de la existencia de paquetería en particular en el sistema.

En ocasiones es posible que se encuentre en una situación como esta: usted encuentra en algún sitio de Internet un paquete RPM® del cual se hablan maravillas en la descripción, pero desconoce si ya lo tendrá instalado, o si ya tiene una versión más reciente; podría averiguarlo descargando dicho paquete, que quizá tenga varios Mega-bytes en tamaño, utilizando una lenta conexión de modem y probando con la línea de mandato rpm -Uvh. Si resultó un paquete más reciente que el que usted tenía, habrán valido la pena los 10-15 minutos invertidos en descargar dicho paquete, pero si ya lo tenía instalado o bien se trataba de una versión anterior, usted desearía haber sabido que podía utilizar la siguiente línea de mandato:

rpm -q nombre_del_paquete_sin_número_de_versión

La correspondiente salida de esto nos dirá si el paquete se encuentra o no instalado y el número de versión.

Si nos interesa examinar la información sobre algún paquete instalado en el sistema, utilizamos la siguiente línea de mandato:

rpm -qi nombre_del_paquete_sin_número_de_versión

Lo anterior devuelve los detalles informativos respecto al paquete instalado.

Si queremos examinar dicha información pero en un paquete no instalado en el sistema, solo hace falta añadir p, que implica que nos referiremos a un paquete, en las opciones del mandato del modo siguiente:

rpm -qpi --clean cualquier_paquete_que_haya_descargado.i386.rpm

Verificación de firmas de paquetes RPM®.

Por cuestiones de seguridad, si usted descarga un paquete RPM® desde un sitio Web o servidor FTP distinto al oficial de la distribución o conjunto de paquetes que utilice, lo más saludable será verificar dicho paquete. JAMÁS descargue e instale paquetes de binarios desde sitios Web dedicados a actividades ilegales o de dudosa reputación.

Por si acaso, utilice la siguiente línea de mandato para verificar las firmas incluidas en paquetes antes de proceder a instalarlos:

rpm -Kv paquete.i386.rpm

Esto debe darle la siguiente salida, donde las x corresponden a la firma PGP de la persona que construyó el paquete:

paquete.i386.rpm: MD5 sum OK: xxxxxxxxxxxxxxxxxxxxx

Compare la firma PGP con la del empaquetador, misma que debe corresponder con la que este proporcione en el sitio Web desde donde descargue dicho paquete.


Instalación de paquetes a partir de paquetes .tar.gz o .tar.bz2.

Este el el método universal para todas las distribuciones de GNU/Linux® ya que funciona tanto en distribuciones basadas sobre Red Hat, como Debian, Stampede o Slackware. Debido a que no se guarda un registro sobre lo que se tiene instalado y lo que no, conviene, en le caso de distribuciones basadas sobre Red Hat™ Linux, dejar las carpetas resultantes con el código fuente en /usr/src/redhat/BUILD para tener una referencia y evitar romper las posibles dependencias entre los distintos paquetes.

La mayoría de estos paquetes, denominados tarballs, vienen con extensión .tar.gz o tar.bz2. Lo primero será copiarlos en la carpeta /usr/src/redhat/SOURCES y lo siguiente consiste en descomprimir estos con la siguiente línea de mandato:

tar -zxvf /usr/src/redhat/SOURCES/paquete.tar.gz /usr/src/redhat/BUILD/

Después acceda al interior de la carpeta resultante:

cd /usr/src/redhat/BUILD/paquete

Es necesario que lea la documentación que acompaña a dicho paquete y seguir las instrucciones proporcionadas por el autor. Por lo general son necesarios al menos tres pasos:

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var make make install make clean

Algunos paquetes de binarios propietarios, como OpenOffice.org, incluyen documentación y un instructivo que detalla la instalación. OpenOffice.org requiere se ejecute el binario setup, con la opción /net si va ser utilizado por varios usuarios, contenido en la sub-carpeta bin.

cd /usr/src/redhat/BUILD/openoffice ./setup /net

En la mayoría de los casos, como ocurre con los programas con licencia GPL que se distribuyen como códigos fuentes, necesitará ejecutar algunos mandatos como se muestra a continuación:


Compilación desde código fuente.
./configure
Este prepara el Makefile y configura las opciones de compilación, mismas que en algunos casos pueden resultar demasiado complejas para un usuario novicio. Además de verifica si el sistema posee las bibliotecas de desarrollo necesarias para la compilación.
make
Este es el que realiza la compilación del código fuente. El procesos puede durar varios minutos.

make install
Este se encarga de realizar la instalación del los binarios y módulos compilados en los lugares correctos.
make clean
Opcionalmente podemos utilizar este mandato para limpiar los remanentes que se originaron por la compilación a fin de recuperar espacio en el disco duro.

Si por alguna razón necesita desinstalar el programa resultante, puede utilizar make uninstall.


En el mejor de los casos, si el tarball contiene un archivo spec, puede construirse un paquete RPM® de modo muy similar a la compilación e instalación desde paquetes SRPMS.

Solo requiere ejecutar la siguiente línea de mandato:

rpm -tb --clean paquete.tar.gz

Y, si obtuvimos en la última línea del proceso un + exit 0, finalmente podremos disponer de el paquete resultante:

rpm -Uvh /usr/src/redhat/RPMS/i386/paquete.i386.rpm

Ejercicios.

Antes de empezar, es necesario, si no lo ha hecho, instalar los paquetes de bibliotecas de desarrollo incluidas en el CDROM de instalación de la distribución que posea. Puede utilizar rpm -Uvh *-devel-*.

Instalación y desinstalación de un paquete RPM®



  1. Instale firestarter-x.x.x-x.i586.rpm con la siguiente línea mandato:

    rpm -Uvh firestarter-*.i586.rpm
  2. Ejecute el programa que acaba de instalar ejecutando firestarter

  3. Cierre el programa ejecutemos el mandato para verificar que versión tenemos instalada: y observe la salida

    rpm -q firestarter
  4. Proceda ahora a desinstalar el programa con la siguiente línea de mandato:

    rpm -e firestarter


Compilación e instalación desde un SRPM.



  1. Ejecute el siguiente mandato:

    rpmbuild --rebuild --clean firestarter-*.src.rpm
  2. Espere unos minutos, y si recibe en la última línea una salida +exit 0, cambie al directorio conde quedó el paquete RPM® de binarios:

    cd /usr/src/redhat/RPMS/i386 ; ls
  3. Instale el RPM® resultante con la siguiente línea de mandato:

    rpm -Uvh firestarter-*.i386.rpm
  4. Ejecute el programa que acaba de instalar ejecutando firestarter

  5. Cierre el programa ejecutemos el mandato para verificar que versión tenemos instalada: y observe la salida

    rpm -q firestarter
  6. Proceda ahora a desinstalar el programa con la siguiente línea de mandato:

    rpm -e firestarter


Compilación e instalación desde código fuente -tarball-.



  1. Abra una terminal o consola.

  2. Instale este paquete, que contiene un código fuente, con la siguiente línea de mandato.

    rpm -Uvh firestarter-*.src.rpm
  3. Revise el contenido de los siguientes directorios, ya que en estos encontrará un par de archivos nuevos:

    • cd /usr/src/redhat/SPECS ; ls

      En este encontrará un archivo llamado firestarter.spec

    • cd /usr/src/redhat/SOURCES ; ls

      En este otro encontrará firestarter-0.8.2.tar.gz

  4. Descomprima firestarter-0.8.2.tar.gz utilizando la siguiente línea de mandato:

    tar -zxvf /usr/src/redhat/SOURCES/firestarter-0.8.2.tar.gz /usr/src/redhat/BUILD

    Como resultado, ahora tendremos una carpeta firestarter-0.8.2.

  5. Cambie al directorio /usr/src/redhat/BUILD/firestarter-0.8.2:
    cd /usr/src/redhat/BUILD/firestarter-0.8.2
  6. Ejecute el siguiente mandato y observe los mensajes que aparecerán en pantalla:

    ./configure
  7. Ejecute el siguiente mandato para iniciar la compilación, espere algunos minutos para que completen todos los procesos y observe los mensajes que aparecerán en pantalla, sobretodo asegurándose que la última línea se lea + exit 0:

    make
  8. Ejecute el siguiente mandato a fin de instalar el programa que acaba de compilar:

    make install
  9. Ejecute el siguiente mandato para comprobar que ha concluído exitosamente la primera parte del ejercicio,, invocando a firestarter, un programa de correo electrónico:

    firestarter
  10. Proceda a desinstalar firestarter:

    make uninstall
  11. Finalmente, a fin de recuperar algo de espacio en disco duro, procederemos a limpiar los módulos y binarios creados dentro de /usr/src/redhat/BUILD/firestarter-0.8.2

    make clean

Autor: Joel Barrios Dueñas
Correo electrónico: jbarrios arroba linuxparatodos punto net
Sitio de Red: http://www.linuxparatodos.net/

0 comentarios: