Red Hat Linux 7.0: The Official Red Hat Linux Reference Guide | ||
---|---|---|
Anterior | Capítulo 5. Gestión de paquetes con RPM | Siguiente |
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.
Nota | |
---|---|
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.
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:
# rpm -e foo # |
Nota | |
---|---|
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.
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 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.
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.
-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:
rpm -Vf /bin/vi |
Para verificar TODOS los paquetes instalados:
rpm -Va |
Para controlar un paquete instalado con un fichero de un paquete RPM:
rpm -Vp foo-1.0-1.i386.rpm |
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:
5 -- MD5 checksum
S -- Tamaño del Fichero
L -- Enlace simbólico
T -- Tiempo de Modificación del Fichero
D -- Dispositivo
U -- Usuario
G -- Grupo
M -- Modo (incluye los permisos y los tipos de fichero)
? - fichero ilegible
Si ve una salida completa, pruebe a determinar si es mejor quitar o reinstalar el paquete, o bien corregir el problema.