Red Hat Linux 7.1: Official Red Hat Linux Customization Guide | ||
---|---|---|
Anterior | Capítulo 17. La administración de paquetes con RPM | Siguiente |
RPM tiene cinco modos de operación básicos (sin contar la construcción de paquetes): instalación, desinstalación, actualización, consulta y verificación. Esta sección contiene una visión de conjunto de cada modo. Para obtener detalles y opciones lance el comando rpm --help, o diríjase a la la sección de nombre Recursos adicionales para obtener más información sobre RPM.
Antes de usar un RPM debe saber dónde encontrarlo. Con una búsqueda en Internet obtendrá varios depósitos de RPM, pero si está buscando paquetes RPM construidos por Red Hat, se pueden encontrar en los siguientes sitios:
Los CD-ROMs Red Hat Linux oficiales
La página de errata de Red Hat a disposición en http://www.redhat.com/support/errata
Existe un sitio espejo FTP de Red Hat en http://www.redhat.com/mirrors.html
Red Hat Network — consulte Capítulo 19 para obtener más detalles sobre Red Hat Network
Los paquetes RPM normalmente tienen nombres de fichero como foo-1.0-1.i386.rpm. El nombre de fichero incluye el nombre de paquete (foo), versión (1.0), lanzamiento (1) y arquitectura (i386). La instalación de un paquete es tan simple como teclear el siguiente comando en el indicador de comandos de shell:
# rpm -ivh foo-1.0-1.i386.rpm foo #################################### # |
Como podrá ver, RPM imprime el nombre del paquete y luego imprime una serie de almohadillas (#) mientras se instala el paquete como una especie de medidor de progreso.
Nota | |
---|---|
A pesar de que un comando como rpm -ivh foo-1.0-1.i386.rpm se use comúnmente para instalar un paquete RPM, tal vez desee tomar en consideración el uso de rpm -Uvh foo-1.0-1.i386.rpm en su lugar. -U se usa normalmente para actualizar un paquete, pero también instala paquetes nuevos. Consulte la sección de nombre La actualización para obtener más información sobre el uso de la opción -U de RPM. |
La instalación de paquetes está ideada para ser sencilla, pero de vez en cuando podría haber errores:
Si ya está instalado un paquete de la misma versión, verá:
# rpm -ivh foo-1.0-1.i386.rpm foo package foo-1.0-1 is already installed # |
Si desea instalar el paquete de todos modos y la versión que está intentando instalar ya está instalada, podrá usar la opción --replacepkgs, la cual le dirá a RPM que ignore el error:
# rpm -ivh --replacepkgs foo-1.0-1.i386.rpm foo #################################### # |
Esta opción es útil si algunos ficheros instalados desde RPM fueron borrados o si desea que se instalen los ficheros de configuración originales desde RPM.
Si intenta instalar un paquete que contiene un fichero que ya ha sido instalado por otro paquete o una versión más antigua del mismo paquete, verá lo siguiente:
# rpm -ivh foo-1.0-1.i386.rpm foo /usr/bin/foo conflicts with file from bar-1.0-1 # |
Para hacer que RPM ignore este error, use la opción --replacefiles:
# rpm -ivh --replacefiles foo-1.0-1.i386.rpm foo #################################### # |
Los paquetes RPM pueden "depender" de otros paquetes, lo cual significa que requieren de la instalación de otros paquetes para poder ejecutarse adecuadamente. Si intenta instalar un paquete que tiene una dependencia no resuelta, verá lo siguiente:
# rpm -ivh foo-1.0-1.i386.rpm failed dependencies: bar is needed by foo-1.0-1 # |
Para resolver este error deberá instalar los paquetes indicados. Si de todos modos desea forzar la instalación (no es una idea muy buena ya que el paquete probablemente no se ejecutará adecuadamente), use la opción --nodeps.
Desinstalar un paquete es tan simple como instalarlo. Teclee el siguiente comando en el indicador de comandos shell:
# rpm -e foo # |
Nota | |
---|---|
Note que hemos usado el nombre foo del paquete, no el nombre de fichero foo-1.0-1.i386.rpm del paquete original. Para desinstalar un paquete necesitará sustituir foo con el verdadero nombre de paquete del paquete original. |
Podría encontrarse con un error de dependencia cuando esté desinstalando un paquete si otro paquete instalado depende del que está tratando de eliminar. 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 el paquete de todos modos (que tampoco es buena idea ya que al hacerlo, el paquete que depende de él probablemente dejará de funcionar correctamente), use la opción --nodeps.
Actualizar un paquete es parecido a instalarlo. Teclee el siguiente comando en un indicador de comandos shell:
# rpm -Uvh foo-2.0-1.i386.rpm foo #################################### # |
Lo que no se ve arriba es que RPM ha desinstalado automáticamente cualquier versión antigua del paquete foo. De hecho, tal vez desee usar -U siempre para instalar paquetes, ya que funcionará aunque no haya versiones precedentes del paquete instaladas.
Ya que RPM lleva a cabo la actualización inteligente de paquetes con ficheros de configuración, tal vez vea un mensaje como el siguiente:
saving /etc/foo.conf as /etc/foo.conf.rpmsave |
Este mensaje significa que los cambios hechos al fichero de configuración podrían no ser "compatibles a reenvío" con el fichero de configuración nuevo en el paquete, así que RPM ha almacenado su fichero original y ha instalado uno nuevo. Debería averiguar cuáles son las diferencias entre los dos ficheros de configuración y resuelva el problema tan pronto como le sea posible para asegurarse que su sistema continúe funcionando correctamente.
La actualización es en realidad una combinación de las actividades de desinstalación e instalación, así que durante una actualización RPM, podrá encontrar errores de desinstalación e instalación, además de cualquier otro tipo de error. Si RPM cree que usted está tratando de actualizar a un número de versión de paquete más antiguo, aparecerá lo siguiente:
# rpm -Uvh foo-1.0-1.i386.rpm foo package foo-2.0-1 (which is newer) is already installed # |
Para hacer que RPM "actualice" de todos modos, use la opción --oldpackage:
# rpm -Uvh --oldpackage foo-1.0-1.i386.rpm foo #################################### # |
Refrescar un paquete es parecido a actualizarlo. Teclee el siguiente comando en un indicador de comandos shell:
# rpm -Fvh foo-1.2-1.i386.rpm foo #################################### # |
La opción de refrescamiento RPM compara las versiones de los paquetes especificados en la línea de comandos con las versiones de los paquetes que ya han sido instalados en su sistema. Cuando la opción de refrescamiento de RPM elabora una versión más reciente de un paquete ya instalado, éste será actualizado a la versión más reciente. Sin embargo, la opción de refrescamiento de RPM no instalará un paquete si no existe un paquete previamente instalado del mismo nombre. Esto no es igual a la opción de actualización de RPM, ya que una actualización sí instalará paquetes, no importa si ya esté instalada una versión más antigua de un paquete.
La opción de refrescamiento de RPM funciona ya sea para paquetes individuales que para un grupo de paquetes. Si usted acaba de descargar una gran cantidad de paquetes diferentes y sólo desea actualizar los paquetes que ya estaban instalados en su sistema, la solución es el refrescamiento. Si utiliza la opción de refrescamiento, antes de usar RPM no tendrá que eliminar ningún paquete indeseado del grupo que ha descargado.
En este caso, puede simplemente lanzar el siguiente comando:
# rpm -Fvh *.rpm |
RPM actualizará automáticamente sólo los paquetes que ya estén instalados.
Use el comando rpm -q para hacer consultas a la base de datos de los paquetes instalados. El comando rpm -q foo imprimirá el nombre de paquete, versión y número de lanzamiento del paquete foo instalado:
# rpm -q foo foo-2.0-1 # |
Nota | |
---|---|
Note que hemos utilizado el nombre foo del paquete. Al hacer una consulta sobre un paquete, necesitará sustituir foo con el verdadero nombre del paquete. |
En vez de especificar el nombre del paquete, se pueden usar las siguientes opciones con -q para especificar lo(s) paquete(s) que desea consultar. Se llaman Opciones de especificación de paquetes.
-a consulta todos los paquetes actualmente instalados.
-f <file> consultará el paquete que posea <file>. Cuando especifique un fichero, deberá especificar la ruta completa del fichero (/usr/bin/ls, por ejemplo).
-p <packagefile> consulta el paquete <packagefile>.
Hay varias maneras de especificar qué información mostrar sobre los paquetes consultados. Las siguientes opciones sirven para seleccionar el tipo de información que usted está buscando. Se llaman Opciones de selección de información.
-i muestra información del paquete como el nombre, la descripción, la versión, el tamaño, la fecha de construcción, la fecha de instalación, el distribuidor, y otra información miscelánea.
-l muestra la lista de ficheros contenidos en el paquete.
-s muestra el estado de todos los fichero en el paquete.
-d muestra una lista de ficheros marcados como documentación (páginas de manual, páginas de información, ficheros LÉAME, etc.).
-c muestra una lista de ficheros marcados como ficheros de configuración. Estos son los ficheros que usted cambia después de la instalación para adaptar el paquete a su sistema (como sendmail.cf, passwd, inittab, etc.).
Para acceder a opciones que muestran listas de ficheros, puede añadir -v al comando para que muestre las listas en un formato ls -l conocido.
La verificación de un paquete tiene que ver con comparar la información sobre ficheros instalados de un paquete con la misma información del paquete original. Entre otras cosas, la verificación compara el tamaño, la suma MD5 los permisos, el tipo, el dueño y el grupo de cada fichero.
El comando rpm -V verifica un paquete. Usted puede utilizar cualquiera de las Opciones de selección de paquete de la lista para pedir que se especifiquen los paquetes que desea verificar. Un modo sencillo de verificar es rpm -V foo, que verifica si todos los ficheros en el paquete foo se encuentran en el mismo estado en que estaban cuando originalmente fueron instalados. Por ejemplo:
Para verificar un paquete que contiene un determinado fichero:
rpm -Vf /bin/vi |
Para verificar TODOS los paquetes instalados:
rpm -Va |
Para verificar un paquete instalado contra un fichero de paquete RPM:
rpm -Vp foo-1.0-1.i386.rpm |
Si todo fue verificado correctamente, no habrá salida. Si se encuentran discrepancias, serán mostradas. El formato de la salida es una cadena de ocho caracteres (una c identifica un fichero de configuración) seguido por el nombre del fichero. Cada uno de los ocho caracteres señala el resultado de una comparación entre un atributo del fichero al valor de ese atributo escrito en la base de datos de RPM. Un solo . (punto) significa que ha pasado la prueba. Los siguientes caracteres señalan que ciertas pruebas no han sido pasadas:
5 — MD5 checksum
S — file size
L — symbolic link
T — file modification time
D — device
U — user
G — group
M — mode (incluye los permisos y tipos de ficheros)
? — unreadable file
Si ve alguna salida, use su buen juicio para determinar si debería quitar o reinstalar el paquete o resolver el problema de otra manera.