32.2. El uso de RPM

RPM tiene cinco modos de operación básicos (sin contar la construcción de paquetes): instalación, desinstalación, actualización, consulta y verificación. Esta sección contiene una visión de conjunto de cada modo. Para obtener detalles y opciones lance el comando rpm --help, o diríjase a la Sección 32.5 para obtener más información sobre RPM.

32.2.1. Encontrar paquetes RPM

Antes de usar un RPM debe saber dónde encontrarlo. Con una búsqueda en Internet obtendrá varios depósitos de RPM, pero si está buscando paquetes RPM construidos por Red Hat, se pueden encontrar en los siguientes sitios:

32.2.2. Instalación de RPM

Los paquetes RPM normalmente tienen nombres de archivo como foo-1.0-1.i386.rpm. El nombre de archivo incluye el nombre de paquete (foo), versión (1.0), lanzamiento (1) y arquitectura (i386). La instalación de un paquete es tan simple como teclear el siguiente comando en el intérprete de comandos de shell:

rpm -Uvh foo-1.0-1.i386.rpm

Si la instalación es correcta verá lo siguiente:

Preparing...                ########################################### [100%]
   1:foo                    ########################################### [100%]

Como podrá ver, RPM imprime el nombre del paquete y luego imprime una serie de almohadillas (#) mientras se instala el paquete como una especie de medidor de progreso.

Si empieza con la versión 4.1 del RPM, la firma del paquete se autentica en el momento de la instalación o de la actualización del paquete. Si la verificación de la firma falla, verá el siguiente mensaje de error:

error: V3 DSA signature: BAD, key ID 0352860f

Si se trata de una nueva firma en el cabezal, verá el siguiente error:

error: Header V3 DSA signature: BAD, key ID
0352860f

Si no tiene instalada la clave apropiada para verificar la firma, el mensaje dirá NOKEY y será como lo siguiente:

warning: V3 DSA signature: NOKEY, key ID
0352860f

Para mayor información sobre la verificación de la firma del paquete, consulte la Sección 32.3.

NotaNota
 

Si está instalando un paquete del kernel, use el comando rpm -ivh. Consulte el Capítulo 30 para mayor información.

La instalación de paquetes está ideada para ser sencilla, pero de vez en cuando podría haber errores.

32.2.2.1. Paquete ya instalado

Si ya está instalado un paquete de la misma versión, verá:

Preparing...                ########################################### [100%]
package foo-1.0-1 is already installed

Si desea instalar el paquete de todos modos y la versión que está intentando instalar ya está instalada, podrá usar la opción --replacepkgs, la cual le dirá a RPM que ignore el error:

rpm -ivh --replacepkgs foo-1.0-1.i386.rpm

Esta opción es útil si se borraron los archivos instalados del RPM o si desea que se instalen los archivos de configuración originales del RPM.

32.2.2.2. Archivos en conflicto

Si intenta instalar un paquete que contiene un archivo que ya ha sido instalado por otro paquete o una versión más antigua del mismo paquete, verá lo siguiente:

Preparing...                ########################################### [100%]
file /usr/bin/foo from install of foo-1.0-1 conflicts with file from package
bar-2.0.20

Para hacer que RPM ignore este error, use la opción --replacefiles:

rpm -ivh --replacefiles foo-1.0-1.i386.rpm

32.2.2.3. Dependencias no resueltas

Los paquetes RPM pueden "depender" de otros paquetes, lo cual significa que requieren de la instalación de otros paquetes para poder ejecutarse adecuadamente. Si intenta instalar un paquete que tiene una dependencia no resuelta, verá lo siguiente:

Preparing...                ########################################### [100%]
error: Failed dependencies:
        bar.so.2 is needed by foo-1.0-1
    Suggested resolutions:
        bar-2.0.20-3.i386.rpm

Si está instalando un paquete oficial de Red Hat, se le sugerirá resolver la dependencia de este paquete. Encuentre este paquete en los CD-ROMs de Red Hat Linux o en el sitio FTP (o espejo) y añádalo al comando:

rpm -ivh foo-1.0-1.i386.rpm bar-2.0.20-3.i386.rpm

Si se realiza la instalación correctamente, verá lo siguiente:

Preparing...                ########################################### [100%]
   1:foo                    ########################################### [ 50%]
   2:bar                    ########################################### [100%]

Si no se le suguiere resolver la dependencia, puede intentar usar la opción --redhatprovides para determinar el paquete que contenga el archivo requerido. Necesita instalar el paquete rpmdb-redhat para usar esta opción.

rpm -q --redhatprovides bar.so.2

Si el paquete que contiene el archivo bar.so.2 se encuentra en la base de datos instalada del paquete rpmdb-redhat aparecerá el nombre del paquete:

bar-2.0.20-3.i386.rpm

Si desea forzar la instalación de todas maneras (no es una buena idea ya que el paquete no funcionará correctamente), use la opción --nodeps.

32.2.3. Desinstalación

Desinstalar un paquete es tan simple como instalarlo. Teclee el siguiente comando en el intérprete de comandos de la shell:

rpm -e foo

NotaNota
 

Observe que hemos usado el nombre foo del paquete, no el nombre de archivo foo-1.0-1.i386.rpm del paquete original. Para desinstalar un paquete necesitará sustituir foo con el verdadero nombre de paquete del paquete original.

Podría encontrarse con un error de dependencia cuando esté desinstalando un paquete si otro paquete instalado depende del que está tratando de eliminar. Por ejemplo:

Preparing...                ########################################### [100%]
error: removing these packages would break dependencies:
        foo is needed by  bar-2.0.20-3.i386.rpm

Para hacer que RPM ignore este error y desinstale el paquete de todos modos (que tampoco es buena idea ya que al hacerlo, el paquete que depende de él probablemente dejará de funcionar correctamente), use la opción --nodeps.

32.2.4. Actualización

Actualizar un paquete es parecido a instalarlo. Teclee el siguiente comando en un intérprete de comandos de la shell:

rpm -Uvh foo-2.0-1.i386.rpm

Lo que no se ve arriba es que RPM ha desinstalado automáticamente cualquier versión antigua del paquete foo. De hecho, tal vez desee usar -U siempre para instalar paquetes, ya que funcionará aunque no haya versiones precedentes del paquete instaladas.

Ya que RPM lleva a cabo la actualización inteligente de paquetes con archivos de configuración, tal vez vea un mensaje como el siguiente:

saving /etc/foo.conf as /etc/foo.conf.rpmsave

Este mensaje significa que los cambios hechos al archivo de configuración podrían no ser "compatibles a reenvío" con el archivo de configuración nuevo en el paquete, así que RPM ha almacenado su archivo original y ha instalado uno nuevo. Debería averiguar cuáles son las diferencias entre los dos archivos de configuración y resuelva el problema tan pronto como le sea posible para asegurarse que su sistema continúe funcionando correctamente.

La actualización es en realidad una combinación de las actividades de desinstalación e instalación, así que durante una actualización RPM, podrá encontrar errores de desinstalación e instalación, además de cualquier otro tipo de error. Si RPM cree que usted está tratando de actualizar a un número de versión de paquete más antiguo, aparecerá lo siguiente:

package foo-2.0-1 (which is newer than foo-1.0-1) is already installed

Para hacer que RPM "actualice" de todos modos, use la opción --oldpackage:

rpm -Uvh --oldpackage foo-1.0-1.i386.rpm

32.2.5. Refrescamiento

Refrescar un paquete es parecido a actualizarlo. Teclee el siguiente comando en un intérprete de comandos shell:

rpm -Fvh foo-1.2-1.i386.rpm

La opción de refrescamiento RPM compara las versiones de los paquetes especificados en la línea de comandos con las versiones de los paquetes que ya han sido instalados en su sistema. Cuando la opción de refrescamiento de RPM elabora una versión más reciente de un paquete ya instalado, éste será actualizado a la versión más reciente. Sin embargo, la opción de refrescamiento de RPM no instalará un paquete si no existe un paquete previamente instalado del mismo nombre. Esto no es igual a la opción de actualización de RPM, ya que una actualización instalará paquetes, no importa si ya esté instalada una versión más antigua de un paquete.

La opción de refrescamiento de RPM funciona ya sea para paquetes individuales que para un grupo de paquetes. Si usted acaba de descargar una gran cantidad de paquetes diferentes y sólo desea actualizar los paquetes que ya estaban instalados en su sistema, la solución es el refrescamiento. Si utiliza la opción de refrescamiento, antes de usar RPM no tendrá que eliminar ningún paquete indeseado del grupo que ha descargado.

En este caso, puede ejecutar el comando siguiente:

rpm -Fvh *.rpm

RPM actualizará automáticamente sólo los paquetes que ya estén instalados.

32.2.6. Consultas

Use el comando rpm -q para hacer consultas a la base de datos de los paquetes instalados. El comando rpm -q foo imprimirá el nombre de paquete, versión y número de lanzamiento del paquete foo instalado:

foo-2.0-1

NotaNota
 

Observe que hemos utilizado el nombre foo del paquete. Al hacer una consulta sobre un paquete, necesitará sustituir foo con el verdadero nombre del paquete.

En vez de especificar el nombre del paquete, se pueden usar las siguientes opciones con -q para especificar lo(s) paquete(s) que desea consultar. Se llaman Opciones de especificación de paquetes.

Hay varias maneras de especificar qué información mostrar sobre los paquetes consultados. Las siguientes opciones sirven para seleccionar el tipo de información que usted está buscando. Se llaman Opciones de selección de información.

Para acceder a opciones que muestran listas de archivos, puede añadir -v al comando para que muestre las listas en un formato ls -l conocido.

32.2.7. Verificación

La verificación de un paquete tiene que ver con comparar la información sobre archivos instalados de un paquete con la misma información del paquete original. Entre otras cosas, la verificación compara el tamaño, la suma MD5, los permisos, el tipo, el dueño y el grupo de cada archivo.

El comando rpm -V verifica un paquete. Usted puede utilizar cualquiera de las Opciones de selección de paquete de la lista para pedir que se especifiquen los paquetes que desea verificar. Un modo sencillo de verificar es rpm -V foo, que verifica si todos los archivos en el paquete foo se encuentran en el mismo estado en que estaban cuando originalmente fueron instalados. Por ejemplo:

Si todo fue verificado correctamente, no habrá salida. Si se encuentran discrepancias, serán mostradas. El formato de la salida es una cadena de ocho caracteres (una c identifica un archivo de configuración) seguido por el nombre del archivo. Cada uno de los ocho caracteres señala el resultado de una comparación entre un atributo del archivo al valor de ese atributo escrito en la base de datos de RPM. Un sólo . (punto) significa que ha pasado la prueba. Los siguientes caracteres señalan que ciertas pruebas no han sido pasadas:

Si ve alguna salida, use su buen juicio para determinar si debería quitar o reinstalar el paquete o resolver el problema de otra manera.