HTMLWeb
manuales - recursos - gráficos - programación...

Home - Linux -  Redes en Linux -  1 -  2 - 3  - 4 - 5  - 6 - 7  - 8 - 9  - 10 - 11  - 12 - 13  - 14

Redes en Linux (VIII)
por Narciso Cerro, de Piensa en Linux.


Gestión de paquetes. RPM.-

Rpm es un sistema es empaquetamiento que se está convirtiendo en un estándar de hecho en el mundo Linux por las ventajas que supone sobre otros modelos de empaquetamiento y gestión de las instalaciones. Además se distribuye bajo los términos de la GPL (General Public License).

Proporciona al usuario final una serie de facilidades que hacen el mantenimiento del sistema mas sencillo de gestionar ya que mantiene una base de datos de los paquetes instalados y de sus archivos, lo que permite realizar consultas y verificaciones del sistema.

Otra ventaja es que al actualizar software, los archivos de configuración se respetan de manera que no sea necesario volver a realizar los ajustes específicos que ya tuviera definidos, o si no fuera posible, realiza una copia de seguridad de los mismos.

Trabajar con RPM.-

rpm tiene cinco modos de trabajo:

• instalación
• desinstalación
• actualización
• consulta
• verificación

Instalación:

Esto es un típico paquete rpm:

remoza-1.0-1.i386.rpm

Normalmente se nombran normalmente utilizando el nombre del paquete (remoza), versión (1.0), desarrollo (1), y arquitectura (i386). ¡Asegúrese de elegir la arquitectura adecuada para su sistema !

Para instalar un paquete:

[Crispin@Globus /Crispin]$ rpm -ivh remoza-1.0-1.i386.rpm
remoza ####################################

El parámetro i es el utilizado para la instalación. Los otros dos son opcionales, pero útiles. El modo verbose, con v aporta información extra y la h (hash) imprime esas marcas de progreso (#) que nos dicen que algo está ocurriendo.

Siempre podemos hacer una prueba de lo que ocurrirá, sin llegar a instalar, usando la opción —test. La instalación de paquetes es sencilla, pero pueden ocurrir algunos errores:

• Si intentas instalar un paquete que ya está instalado:

[Crispin@Globus /Crispin]$ rpm -ivh remoza-1.0-1.i386.rpm
remoza package remoza-1.0-1 is already installed
error: remoza-1.0-1.i386.rpm cannot be installed

Para forzar la instalación usaremos: —replacepkgs

• Si intentas instalar un paquete que contiene un archivo que ha sido ya instalado por algún otro paquete:

# rpm -ivh remoza-1.0-1.i386.rpm
remoza /usr/bin/remoza conflicts with file from mim-1.0-1
error: remoza-1.0-1.i386.rpm cannot be installed

Para hacer que rpm ignore el error, use —replacefiles

• Si intentas instalar un paquete para el cual existe una dependencia no satisfecha. Los paquetes rpm pueden “depender” de otros paquetes, lo cual significa que requieren que otros paquetes estén instalados en el sistema para que funcionen. En este caso el error será:

[Crispin@Globus /Crispin]$ rpm -ivh mim-1.0-1.i386.rpm
failed dependencies: remoza is needed by mim-1.0-1

• La mejor forma de arreglar este error es instalar los paquetes requeridos. Se puede forzar la instalación usando —nodeps, pero sea consciente que si un paquete necesita a otro para funcionar, debe satisfacer las dependencias.

Desinstalación:

Desinstalar un paquete es tan sencillo como instalarlo, rpm garantiza la limpieza del procedimiento y que se desintalarán todos los ficheros, no importa donde estén instalados:

[Crispin@Globus /Crispin]$ rpm -e remoza

En la desinstalación se usa el nombre remoza para el paquete, no el nombre del paquete original remoza-1.0-1.i386.rpm.

Un error habitual es el de «romper» las dependencias al desinstalar un paquete si algún otro paquete instalado depende del que está intentando borrar. Por ejemplo:

[Crispin@Globus /Crispin]$ rpm -e remoza
removing these packages would break dependencies:
remoza is needed by mim-1.0-1

Para hacer que rpm no realice la comprobación de dependencias y desinstale el paquete de todas maneras: —nodeps. De nuevo recuerde que las dependencias no resueltas, generan un error en la ejecución del programa en cuestión.

Actualización:

Actualizar un paquete como instalar un paquete con la salvedad de que rpm desinstala automáticamente cualquier versión antigua del paquete.

[Crispin@Globus /Crispin]$ rpm -Uvh remoza-2.0-1.i386.rpm
remoza ####################################

Comentamos anteriormente que en la actualización se mantienen los ficheros de configuración. Esto es cierto siempre que sea posible para rpm. Si el formato del archivo ha sufrido tantos cambios que no es compatible con el antiguo, rpm hace una copia de seguridad del fichero antiguo. Veremos un mensaje como:

saving /etc/remoza.conf as /etc/remoza.conf.rpmsave

En este caso será necesario resolver las diferencias entre los dos archivos «a mano» para asegurarse de que su sistema continúa funcionando de acuerdo con sus necesidades.

Los errores del modo instalación se pueden replicar aquí: dependencias no resueltas o paquetes ya instalados. Ademas sí intenta actualizar un paquete con una versión más antigua que la instalada, también se genera un error:

[Crispin@Globus /Crispin]$ rpm -Uvh remoza-1.0-1.i386.rpm
remoza package remoza-2.0-1 (which is newer) is already installed
error: remoza-1.0-1.i386.rpm cannot be installed

Si necesita actualizar de cualquier manera: —oldpackage

Consulta:

Otra de las grandes característica s del sistema rpm es el mantenimiento de una base de datos de todo lo instalado, lo que permite interrogar al sistema para obtener determinada información sobre los paquetes que tenemos instalados, qué ficheros contenían estos paquetes, donde se encuentran ubicados, que tipo de documentación aportaban o cuales son los ficheros de configuración.

Cualquiera qe lea esto y se haya «pegado» alguna vez con instalaciones de software verá rápidamente las posibilidades de este mecanismo.

Consultar la base de datos de paquetes instalados tampoco es complicado: lo conse-guimos con la opción rpm -q

La forma más sencilla de usarlo es:

rpm -q remoza

Que imprimirá el nombre, versión y número de desarrollo del paquete instalado remoza:

[Crispin@Globus /Crispin]$ rpm -q remoza
remoza-2.0-1

Para consultar todos los paquetes instalados utilice -a:

[Crispin@Globus /Crispin]$ rpm -qa

Mostrará en pantalla una (larga) lista con los nombres de los paquetes. Para consultar el paquete al que pertenece un fichero concreto: -f:

[Crispin@Globus /Crispin]$ rpm -qf /bin/ls
fileutils-4.0-21
[Crispin@Globus /Crispin]$

Suponga que tiene un paquete y quiere tener una descripción de su contenido: utilice entonces -i.

[Crispin@Globus /Crispin]$ rpm -qi fileutils
Name: fileutils Relocations: (not relocateable)
Version: 4.0 Vendor: Red Hat, Inc.
Release: 21 Build Date: mié 08 mar 2000 02:42:54 CET
Install date: mar 18 abr 2000 18:32:12 CEST Build Host: porky.devel.redhat.com
Group: Aplicaciones/Ficheros Source RPM: fileutils-4.0-21.src.rpm
Size: 1608922 License: GPL
Packager: Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
Summary: Utilidades de gestión de los ficheros realizados por GNU
Description:
El paquete fileutils contiene varias utilidades de gestión de los ficheros realizados por la GNU. En este paquete encontrará: chgrp (cambia el grupo de un fichero), chown (cambia el propietario del grupo) chmod (cambia los permisos de un fichero), cp (copia los ficheros), dd (copia y convierte los ficheros), df (visualiza el uso del disco), dir (proporciona una lista de los ficheros), dircolors (proporciona la coloración de los ficheros al comando ls), du (visualiza el uso del disco), install (copia ficheros y inicializa los permisos), ln (crea los link), ls (enumera el contenido de un directorio), mkdir (crea directorios), mkfifo (crea FIFOs, que son pipe), mknod (crea ficheros especiales), mv (renombra los ficheros), rm (cancela los ficheros), rmdir (cancela los directorios vacios), sync (descarga los buffers en el disco), touch (cambia el tiempo de impresión de los ficheros), y vdir (visualización en si del contenido de un directorio).

Veamos un listado de los ficheros que contienecon la opción -l:

[Crispin@Globus /Crispin]$ rpm -ql fileutils
/bin/chgrp
/bin/chmod
/bin/chown
/bin/cp
/bin/dd
/bin/df
/bin/ln
/bin/ls
/bin/mkdir
/bin/mknod
/bin/mv
/bin/rm
/bin/rmdir
/bin/sync
/bin/touch
......

El listado continua, esto es solo una muestra.

Si los archivos que buscamos son los de documentación, utilice -d:

[Crispin@Globus /Crispin]$ rpm -qd fileutils
/usr/doc/fileutils-4.0/README
/usr/doc/fileutils-4.0/THANKS
/usr/doc/fileutils-4.0/TODO
/usr/info/fileutils.info.gz
/usr/man/man1/chgrp.1.gz
/usr/man/man1/chmod.1.gz
/usr/man/man1/chown.1.gz
/usr/man/man1/cp.1.gz
/usr/man/man1/dd.1.gz
/usr/man/man1/df.1.gz
....

De nuevo el listado continua.......

Y si queremos saber cuales son de configuración, utilice -c:

[Crispin@Globus /Crispin]$ rpm -qc fileutils
/etc/DIR_COLORS
/etc/profile.d/colorls.csh
/etc/profile.d/colorls.sh

Todas las opciones que presenten listas de archivos, admiten el uso de -v para obtener la salida en el mismo formato que ls -l.

Verificación:

Verificar un paquete es comprobar la integridad del mismo, osea si tenemos en el sistema actualmente lo mismo que se instaló en su día y si está como se supone que debería estar. Entre otras cosas, se compara el tamaño, chequeo MD5, permisos, tipo, usuario y grupo de cada archivo.

Para verificar un paquete: rpm -V remoza

Si el paquete está correcto, la salida es: nada. No hay cambios, osea que no hay nada que mostrar.

En el caso de encontrar diferencias muestra en pantalla una palabra de ocho caracteres, uno por cada prueba que realiza. Un punto equivale a que la comparación es correcta. Una letra indica un cambio en esa comparación concreta.

Los chequeos que hace son:

• Tamaño del archivo: S
• Enlace simbólico: L
• Fecha del archivo: T
• Dispositivo distinto: D
• Usuario distinto: U
• Grupo distinto: G
• Modo (permisos) distinto: M
• MD5 modificado: 5

Por ejemplo:

[Crispin@Globus /Crispin]$ rpm -Va
S.5....T c /etc/exports
S.5....T c /etc/hosts.allow
S.5....T c /etc/hosts.deny
S.5....T c /etc/printcap
S.5....T c /etc/profile
missing /etc/securetty
S.5....T c /etc/services
......G. /usr/X11R6/lib/X11
S.5....T c /etc/localtime
.......T c /etc/nsswitch.conf
S.5....T c /etc/info-dir
y sigue....

Esto indica los ficheros que han sufrido algún cambio, como se puede apreciar, la mayoría son ficheros de configuración, que es lógico modificar, un fichero missing (desaparecido), etc. Es una buena manera de localizar errores del sistema, o motivos de comportamientos erráticos de algunos programas. Dependiendo de estos datos se procederá a reinstalar o eliminar el paquete dañado.

La opción «verificar» admite las mismas combinaciones que la opción «comparar» Para comprobar el estado de un archivo en particular:

[Crispin@Globus /Crispin]$ rpm -Vf /bin/ls

Para verificar un paquete instalado con su correspondiente paquete rpm:

[Crispin@Globus /Crispin]$ rpm -Vp remoza-1.0-1.i386.rpm

Esto puede ser útil si sospecha que su base de datos de paquetes rpm esta corrupta. rpm es una herramienta muy útil tanto para manejar el sistema como para diagnosticar y solucionar problemas.

Por supuesto existen las correspondientes aplicaciones desarrolladas para trabajar con rpm desde el entorno gráfico X11. Un ejemplo es kpackage, desarrollado por KDE, o gnorpm si usa Gnome. Las funciones que implementa son prácticamente las mismas, con la ventaja añadida de la facilidad de manejo, (aunque ya se ha visto que desde línea de comandos no existe ninguna dificultad) y las desventajas de ser más lento al ocupar más recursos del sistema y no se tiene tanta potencia a la hora de realizar consultas complejas a la base de datos de rpm. Como siempre, la decisión del modo de trabajo: a gusto del consumidor.

Para finalizar con RPM.-

Para localizar ficheros que afectan a la gestión de las base de datos de rpm tendremos que mirar en /var/lib/rpm y en /usr/lib/rpm.
Listado de /var/lib/rpm:

conflictsindex.rpm groupindex.rpm packages.rpm requiredby.rpm
fileindex.rpm nameindex.rpm providesindex.rpm triggerindex.rpm

packages.rpm es el que contiene la base de datos de los programas que tenemos instalados en el sistema. La integridad de este fichero es importante para el correcto funcionamiento de rpm.

De el contenido de /usr/lib/rpm, cabe destacar dos ficheros de configuración, rpmopt y rpmrc. La configuración actual se puede ver ejecutando:

[Crispin@Globus /Crispin]$ rpm —showrc

 

anterior
siguiente

Home - Linux -  Redes en Linux -  1 -  2 - 3  - 4 - 5  - 6 - 7  - 8 - 9  - 10 - 11  - 12 - 13  - 14