Usar RPM

RPM tiene 5 modos de funcionamiento fundamentales (sin contar la construcción de paquetes): instalación, desinstalación, actualización, consulta (de la base de datos) y verificación (de los paquetes). Esta sección contiene un prólogo de cada modo. Para tener mayor información al respecto, consulte rpm --help, o bien, para saber más sobre RPM, vea la sección de nombre Otras informaciones sobre RPM.

Instalar

Los paquetes RPM tienen normalmente nombres como foo-1.0-1.i386.rpm, que contienen el nombre del paquete (foo), la versión (1.0),el release (1) y la arquitectura del sistema sobre el que se mueven (i386). Instalar un paquete es tan simple como:

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

Como puede ver, RPM muestra el nombre del paquete (que no es necesariamente igual a aquel fichero, que habría podido ser 1.rpm), y después imprime una serie de símbolos que indican si el paquete está instalado o un indicador de avance.

NotaNota
 

Aunque usando el comando rpm -ivh foo-1.0-1.i386.rpm para una instalación común, puede querer considerar usar rpm -Uvh foo-1.0-1.i386.rpm. -U es comúnmente usado para actualizar un paquete, pero también instalara nuevos paquetes. Vea la sección de nombre Actualización para más información acerca del uso del comando -U de RPM .

La instalación de los paquetes ha sido estudiada para ser lo más simple posible, en todo caso es posible encontrar algún error.

Paquete que ya ha sido instalado

Si el paquete ya ha sido instalado, verá:

# rpm -ivh foo-1.0-1.i386.rpm
foo                     package foo-1.0-1 is already installed
error: foo-1.0-1.i386.rpm cannot be installed
#
          

Si realmente quiere instalar el paquete, podrá instroducir --replacepkgs sobre la línea de comando, el cuál indicará a RPM que ignore el error:

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

Fichero en conflicto

Si intenta instalar un fichero que ha sido instalado sobre su sistema, verá aparecer mensajes:

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

Para que RPM ignore este error, introduzca --replacefiles sobre la línea de comandos:

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

Dependencias no resueltas

Los paquetes RPM pueden "depender" de otros paquetes, lo que significa que requieren que otros paquetes sean instalados en el sistema para que funcione correctamente. Si intenta instalar un paquete para el cual se presenta el caso de una dependencia no resuelta, verá aparecer en la pantalla lo siguiente:

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

Para solucionar este error deberías instalar los paquetes solicitados. Si, en cambio, tiene intención de "forzar" la instalación (una mala idea, visto que el paquete muy probablemente no funcionará correctamente), use el comando --nodeps en el prompt.

Desinstalación

Desinstalar un paquete es tan fácil como instalarlo:

# rpm -e foo
#
	    

NotaNota
 

Dese cuenta que hemos usado el nombre del paquete "foo," y no el nombre del fichero del paquete original "foo-1.0-1.i386.rpm". Para desintalar un paquete, necesitara remplazar foo con el nombre del fichero actual del paquete original.

Es posible encontrar un error de dependencia cuando se desinstala un paquete en el caso en el que esté presente otro paquete que "dependa" de aquel que está intentando instalar. 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 igualmente el paquete seleccionado (que es seguramente una mala idea en cuanto que el paquete que depende de aquel no funcionará correctamente), introduzca el comando --nodeps sobre la línea de comandos.

Actualización

La actualización de un paquete es similar a la instalación.

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

Aquello que no consigue ver es que RPM desinstala automáticamente las viejas versiones del paquete foo. En efecto podría siempre utilizar el comando -U para instalar los paquetes, desde el momento que funciona bien también cuando no hay versiones precedentes del paquete instalado.

Desde el momento que RPM ejecuta las actualizaciones inteligentes de los paquetes con los ficheros de configuración, podrá ver un mensaje como el siguiente:

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

Esto significa que los cambios que ha aportado a los ficheros de configuración no son "sucesivamente" compatibles con los nuevos ficheros de configuración presentes en el paquete, así RPM salva el fichero original e instala el nuevo en el sistema. Debería verificar y eliminar las diferencias entre los dos ficheros lo más rápido posible para aseguraros de que vuestro sistema continúe trabajando correctamente.

Desde el momento en que una actualización es efectivamente una combinación de instalaciones y de desinstalaciones, es posible encontrar los errores debidos a ambas operaciones y un mensaje posterior si RPM piensa que está intentando actualizar un paquete con una versión precedente; entonces verá aparecer sobre la pantalla:

# rpm -Uvh foo-1.0-1.i386.rpm
foo    package foo-2.0-1 (which is newer) is already installed
error: foo-1.0-1.i386.rpm cannot be installed
#
	    

Para hacer que RPM continúe igualmente con la actualización, utilice el comando --oldpackage:

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

Renovación

La renovación de un paquete es similar a la actualización:

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

Las opciones de renovación de RPM comparan las versiones de los paquetes especificados en la línea de comandos con aquellas ya instaladas en vuestro sistema. Cuando una versión más nueva de aquella ya instalada es procesada desde las opciones de renovación de RPM, esta última es actualizada en la última versión. De todas formas, las opciones de renovación de RPM no instalarán nunca un paquete del que no existe una versión precedentemente instalada sobre el sistema. Exactamente esta es la diferencia con las opciones de actualización de RPM, ya que una actualización instalará, los paquetes prescidiendo del hecho de que existan o no precedentes versiones del paquete ya instalado.

Las opciones de renovación de RPM trabajan bien ya sea con cada uno de los paquetes, o ya sea con grupos de paquetes. Es particularmente ventajoso usarlo en el caso en que haya descargado un gran número de paquetes diferentes y queráis actualizar solamente aquellos que efectivamente estaban ya presentes en el ordenador. Utilizar las opciones de renovación (refresh) de RPM significa que no estará obligado a seleccionar el paquete que quiere actualizar eliminando aquellos que no existierasn previamente.

En este caso, deberá simplemente introducir el siguiente comando:

# rpm -Fvh *.rpm
	    

RPM actualizará automáticamente sólo aquellos paquetes que ya han sido instalados.

Consultas

Consultar la base de datos de los paquetes instalados es posible gracias al comando rpm -q. Un ejemplo de su uso es dado por: rpm -q foo que hará imprimir el nombre del paquete, la versión y el número de implementación del paquete que fué instalado:

# rpm -q foo
foo-2.0-1
#
	    

En vez de especificar el nombre del paquete, podrá utilizar las siguientes opciones -q para especificar los paquetes que se quiere que sean consultados. Estos son llamados Package Specification Options.

Existen diversos modos para especificar que informaciones se quieren visualizar de los paquetes consultados. Las siguientes opciones son utilizadas para seleccionar el tipo de información que está buscando. Este es llamado Information Selection Options.

En el caso de todas aquellas opciones que muestran un elenco de ficheros, puede añadir la escritura -v a la línea de comandos para obtener como resultato una lista en el formato más familiar de ls -l.

Verificación de un paquete

La verificación de un paquete consiste en comparar las informaciones que se refieren a los ficheros instalados desde un paquete con las análogas informaciones del paquete original. Entre otras cosas, la verificación de un paquete que compara las dimensiones, el MD5sum, los permisos, el tipo, el propietario y el grupo de cada uno de los archivos.

El comando rpm -V verifica un paquete. Puede utilizar cada una de las Opciones de selección de los paquetes enumerados para efectuar las entradas para especificar los paquetes que deseen verificar. Una simple aplicación de cuanto hemos visto es rpm -V foo que verifica que todos los ficheros en el paquete sean como eran en la versión original cuando han sido instalados. Por ejemplo:

Si todo es verificado correctamente no habrá salidas. Si, en cambio, existen discrepancias serán visualizadas. El formato de la salida es una cadena de 8 caracteres, un eventual "c" que indica un particular fichero de configuración y, al final, el nombre del fichero. Cada uno de los 8 caracteres conlleva el resultado de la comparación de un atributo del fichero con el valor de aquel atributo registrado en la base de datos de RPM. Un "." solo significa que el test ha tenido éxito. Los caracteres siguientes indican el fallo de algunos test:

Si ve una salida completa, pruebe a determinar si es mejor quitar o reinstalar el paquete, o bien corregir el problema.