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 la sección de nombre Recursos adicionales para obtener más información sobre RPM.

Encontrar RPMs

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:

La instalación

Los paquetes RPM normalmente tienen nombres de fichero como foo-1.0-1.i386.rpm. El nombre de fichero 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 indicador de comandos de shell:

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

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.

NotaNota
 

A pesar de que un comando como rpm -ivh foo-1.0-1.i386.rpm se use comúnmente para instalar un paquete RPM, tal vez desee tomar en consideración el uso de rpm -Uvh foo-1.0-1.i386.rpm en su lugar. -U se usa normalmente para actualizar un paquete, pero también instala paquetes nuevos. Consulte la sección de nombre La actualización para obtener más información sobre el uso de la opción -U de RPM.

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

Paquete ya instalado

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

# rpm -ivh foo-1.0-1.i386.rpm
foo                     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
foo                       ####################################
#

Esta opción es útil si algunos ficheros instalados desde RPM fueron borrados o si desea que se instalen los ficheros de configuración originales desde RPM.

Ficheros en conflicto

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

# rpm -ivh foo-1.0-1.i386.rpm
foo           /usr/bin/foo conflicts with file from bar-1.0-1
#

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

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

Dependencia no resuelta

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:

# rpm -ivh foo-1.0-1.i386.rpm
failed dependencies:
        bar is needed by foo-1.0-1
#

Para resolver este error deberá instalar los paquetes indicados. Si de todos modos desea forzar la instalación (no es una idea muy buena ya que el paquete probablemente no se ejecutará adecuadamente), use la opción --nodeps.

La desinstalación

Desinstalar un paquete es tan simple como instalarlo. Teclee el siguiente comando en el indicador de comandos shell:

# rpm -e foo
#

NotaNota
 

Note que hemos usado el nombre foo del paquete, no el nombre de fichero 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:

# rpm -e foo
removing these packages would break dependencies:
        foo is needed by bar-1.0-1
#

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.

La actualización

Actualizar un paquete es parecido a instalarlo. Teclee el siguiente comando en un indicador de comandos shell:

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

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 ficheros 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 fichero de configuración podrían no ser "compatibles a reenvío" con el fichero de configuración nuevo en el paquete, así que RPM ha almacenado su fichero original y ha instalado uno nuevo. Debería averiguar cuáles son las diferencias entre los dos ficheros 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:

# rpm -Uvh foo-1.0-1.i386.rpm
foo    package foo-2.0-1 (which is newer) 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
foo                       ####################################
#

El refrescamiento

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

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

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 simplemente lanzar el siguiente comando:

# rpm -Fvh *.rpm

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

La consulta

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:

# rpm -q foo
foo-2.0-1
#

NotaNota
 

Note 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 ficheros, puede añadir -v al comando para que muestre las listas en un formato ls -l conocido.

La verificación

La verificación de un paquete tiene que ver con comparar la información sobre ficheros 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 fichero.

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 ficheros 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 fichero de configuración) seguido por el nombre del fichero. Cada uno de los ocho caracteres señala el resultado de una comparación entre un atributo del fichero al valor de ese atributo escrito en la base de datos de RPM. Un solo . (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.