RPM tiene cinco modos básicos de operación (sin contar la construcción del paquete): instalación, desinstalación, actualización, consulta y verificación. Esta sección contiene un vistazo de cada modo. Para opciones y detalles completos pruebe rpm --help, vea la página ``man'' de rpm asi como el (anteriormente mencionado) libro de RPM.
Los paquetes RPM tienen típicamente nombres de archivo como foo-1.0-1.i386.rpm, que incluye el nombre del paquete (foo), versión (1.0), desarrollo (1), y arquitectura (i386). Instalar un paquete es tan sencillo como:
$ rpm -ivh foo-1.0-1.i386.rpm foo ####################################
Como puede ver, RPM imprime en pantalla el nombre del paquete (el cual no es necesariamente el mismo que el archivo, el cual puede ser 1.rpm), e imprime una sucesión de símbolos de rejilla a medida que el paquete es instalado, como un medidor del progreso de la instalación.
La instalación de paquetes está diseñada para ser sencilla, pero puede obtener algunos errores:
Si el paquete está ya instalado, usted 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 usted quiere instalar el paquete de todas maneras, usted puede usar --replacepkgs en la línea de comandos, lo que le dice a RPM que ignore el error.
Si intenta instalar un paquete que contiene un archivo que ha sido ya instalado por algún otro paquete, usted verá:
# 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 hacer que RPM ignore el error, use --replacefiles en la línea de comandos.
Los paquetes RPM pueden ``depender'' de otros paquetes, lo cual significa que requieren que otros paquetes sean instalados para funcionar correctamente. Si intenta instalar un paquete para el cual existe una dependencia no satisfecha, usted verá:
$ rpm -ivh bar-1.0-1.i386.rpm failed dependencies: foo is needed by bar-1.0-1
Para arreglar este error usted deberá instalar los paquetes requeridos. Si usted desea forzar la instalación de todas maneras (una mala idea ya que el paquete probablemente no funcionará correctamente), use --nodeps en la línea de comandos.
Desinstalar un paquete es tan sencillo como instalarlo:
$ rpm -e foo
Note que hemos usado el nombre ``foo'' para el paquete, no el nombre del paquete original ``foo-1.0-1.i386.rpm''.
Usted puede encontrar un error de dependencias cuando intente desinstalar el paquete si algún otro paquete instalado depende del que está intentando borrar. Por ejemplo:
$ rpm -e foo removing these packages would break dependencies: foo is needed by bar-1.0-1
Para hacer que RPM ignore el error y desinstale el paquete de todas maneras (lo cual es una mala idea porque el paquete que depende de éste probablemente falle y no funcione correctamente), use --nodeps en la línea de comandos.
Actualizar un paquete es casi como instalar un paquete.
$ rpm -Uvh foo-2.0-1.i386.rpm foo ####################################
Lo que usted no ve arriba es el hecho de que RPM desinstala automáticamente cualquier versión antigua del paquete foo. De hecho usted quizá quiera siempre usar -U para instalar paquetes, ya que funciona bien incluso cuando no hay ninguna versión anterior del paquete instalada.
Dado que RPM realiza actualizaciones inteligentes de los paquetes con archivos de configuración, quizás vea un mensaje como:
saving /etc/foo.conf as /etc/foo.conf.rpmsave
Esto significa que sus cambios al archivo de configuracion puedan no ser ``reversiblemente compatibles'' con el nuevo archivo de configuración en el paquete, por lo que RPM salva su archivo original, e instala uno nuevo. Usted debería investigar y resolver las diferencias entre los dos archivos tan pronto como sea posible para asegurarse de que su sistema continúa funcionando adecuadamente.
Dado que actualizar es realmente una combinación de desinstalación e instalación, usted puede encontar los errores de los dos modos, y uno más: Si RPM piensa que está intentando actulizar un paquete con una versión antigua, usted verá:
$ 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 obligar a RPM a ``actualizar'' de todas maneras, use --oldpackage en la línea de comandos.
Consultar la base de datos de paquetes instalados se realiza mediante la opción rpm -q. Un uso simple es rpm -q foo lo que imprimirá el nombre, versión y número de desarrollo del paquete instalado foo:
$ rpm -q foo rpm-2.0-1
En lugar de especificar el nombre del paquete, usted puede usar las siguientes opciones con -q para especificar de qué paquete(s) quiere hacer una consulta. Éstas son llamadas Opciones de Especificacion de Paquetes (Package Specification Options).
Hay varias formas de especificar qué informacion mostrar sobre los paquetes consultados. Las siguientes opciones son usadas para seleccionar la información en la que usted está interesado. Son las llamadas Opciones de Selección de Información.
Para aquellas opciones que presenten listas de archivos, uste puede añadir -v a la línea de comandos para obtener la lista en el conocido formato ls -l.
Verificar un paquete es comparar la información sobre los archivos instalados desde un paquete con la misma información del paquete original. Entre otras cosas, verificar compara el tamaño, chequeo MD5, permisos, tipo, usuario y grupo de cada archivo.
rpm -V verifica un paquete. Usted puede usar cualquiera de las Opciones de Selección de Paquetes (Package Selection Options) listadas para consultar, para especificar los paquetes que desea verificar. Un uso simple es rpm -V foo lo que verifica que todas los archivos el paquete foo estén como cuando fueron originalmente instaladas. Por ejemplo:
rpm -Vf /bin/vi
rpm -Va
Esto puede ser útil si sospecha que su base de datos de paquetes RPM esta corrupta.rpm -Vp foo-1.0-1.i386.rpm
Si todo es verificado adecuadamente no habrá ninguna salida en pantalla. Si hay alguna discrepancia sí habrá informacion presentada. El formato de la salida es una cadena de 8 caracteres, un posible ``c'' denotando un archivo de configuración, y despues el nombre del archivo. Cada uno de los 8 caracteres denota el resultado de la comparación de un atributo del archivo con el valor de ese atributo en la base de datos RPM. Un solo ``.'' (punto) significa que el test ha sido pasado. Los siguientes caracteres denotan fallo de ciertos tests:
Si usted ve alguna salida en pantalla, use su mejor juicio para determinar si usted deberá borrar o reinstalar el paquete, o alguna manera de resolver el problema.