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:
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á:
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:
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:
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.
saving /etc/foo.conf as /etc/foo.conf.rpmsave
$ 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
8.2.4 Consulta
$ rpm -q foo
rpm-2.0-1
(p.e. find /usr/bin | rpm -qF).
(p.e. find /mnt/cdrom/RedHat/RPMS | rpm -qP).
8.2.5 Verificación
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