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.
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.
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.
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 ####################################
#
|
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 ####################################
#
|
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.
Desinstalar un paquete es tan fácil como instalarlo:
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".
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.
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 ####################################
#
|
La renovación de un fichero 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 yaseacon 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 actualizará automáticamente sólo aquellos paquetes que ya han
sido instalados.
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:
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.
-a consulta todos los paquete instalados.
-f
<file>
consulta el paquete que posee
<file>.
-p
<packagefile>
consulta el paquete
<packagefile>.
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.
-i muestra informaciones relativas al
paquete como el nombre, la descripción, la implementacion,
el tamaño, la fecha de fabricación, la fecha de
instalación, el distribuidor y otras informaciones genéricas.
-l muestra la lista de ficheros que
pertenecen al paquete que se está examinando.
-s muestra el estado de todos los ficheros
contenidos
en el paquete.
-d muestra una lista de ficheros registrados
como documentación (páginas man, paginas de información,
Readme, etc.)
-c muestra una lista de ficheros
marcados
como ficheros de configuración. Estos son los ficheros que ha
cambiado después de la instalación para adaptar el paquete a
su sistema (sendmail.cf, paswwd, inittab, etc).
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.
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:
Para verificar un paquete que contiene un fichero particular:
Para verificar TODOS los paquetes instalados:
Para controlar un paquete instalado con un fichero de
un paquete RPM:
rpm -Vp foo-1.0-1.i386.rpm
|
Todo lo anterior puede ser útil si sospecha que la base
de datos de RPM tiene cualquier problema de funcionamiento.
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.