Administrador de paquetes RPM Linux - LPI 101

La mayoría de las distribuciones de Linux administran software usando alguna forma de administración de paquetes para realizar tareas tales como instalaciones, actualizaciones y consultas. Los tipos de paquetes más populares son Debian y RPM. Sólo cubrimos RPM en este manual.

Nombre del paquete

No existe una convención estricta, pero la mayoría de los nombres de paquetes rpm se forman de la siguiente manera:

  • name-version-release.architecture.rpm
El nombre de la arquitectura puede indicar la arquitectura de la computadora para la que se crean los binarios adjuntos (por ejemplo, i386, ppc, ia64, noarch) o puede indicar que el paquete contiene el código fuente (src).

Modos mayor y menor

Algunas opciones de nombre corto son similares, pero realizan diferentes acciones dependiendo de su posición en la línea de comandos. Se hace una distinción entre la primera opción y otras opciones.


La primera opción dada a rpm está en el modo principal. Por ejemplo, en rpm -iv A.rpm la opción 'i' es una opción importante y hará que se instale el paquete A.

De manera similar, una opción que no está en primera posición está en modo menor. Por ejemplo, en rpm -qpi A.rpm la opción 'i' es un modo menor y obtendrá información del paquete A como el autor y el tipo de licencia.

Estas son las principales opciones de modo para rpm.
Short Long Descripción
-i --install Instala el paquete
-U --update Actualiza o instala un paquete
-F --freshen Actualizaciones sólo paquete instalado
-V --verify tamaño de archivo, MD5, permisos, tipo ...
-q --query Consulta los paquetes instalados / desinstalados y los archivos
-e --erase Desinstalar el paquete

Estas son las opciones de modo menor para rpm.
Short Descripción
a Se aplica a todos los paquetes instalados
c Junto con q lista los archivos de configuración
d Junto con q listas de archivos de documentación
f Junto con q consultas que paquete instalado un determinado archivo
h Agrega hashes mientras procesa
i Junto con q lista información sobre un paquete
l Junto con q lista todos los archivos y directorios en un paquete
p Junto con q especifica que la consulta se realiza en el archivo de paquete
v Verboso

Modos de consulta
Tres tipos de consulta: paquetes desinstalados, paquetes y archivos instalados
Query Type Opciones
Archivo del paquete -qp
Paquete instalado -q
Archivo -qf

Una opción adicional le permitirá obtener información sobre todos los archivos instalados -l, documentación -d archivos de configuración -c, etc ...

Consideramos por ejemplo el paquete routed-0.17.i386.rpm. Podemos consultar este paquete y enumerar su contenido antes de la instalación con la opción l de la siguiente manera:


Una vez instalado este paquete, podemos consultar el paquete instalado con:


Finalmente si queremos averiguar qué paquete instaló el archivo /usr/sbin/routed la base de datos rpm se puede consultar con:


Opciones especiales
--nodeps instala un paquete independientemente de las dependencias
--force force una actualización
--test no instala ni actualiza, simplemente imprime a stdout
--requieres PACKAGE junto con q listas capacidades requeridas por un paquete
--whatrequires CAPABILITY junto con q listas de paquetes que requieren la capacidad

Firmas del paquete

Puede comprobar la firma de cada paquete que se distribuye como parte de un proyecto. Por ejemplo, para cargar las claves de todos los desarrolladores involucrados con el proyecto Fedora, haga lo siguiente (sólo una vez):



Ahora puede descargar cualquier paquete desde un sitio FTP que refleje los RPM del proyecto. Por ejemplo, descargamos zlib-1.2.1.1-2.1.i386.rpm desde ftp.mirror.ac.uk en el subdirectorio de Fedora. A continuación comprobaremos la autenticidad del archivo:


Integridad del paquete

El siguiente comando comprueba la integridad del paquete bash:


Esto no devuelve nada. A continuación, realice lo siguiente como usuario root:


Si comprobamos la integridad de bash nuevamente esta vez obtenemos:


El gestor de paquetes ha comparado el estado actual de todos los archivos que forman parte del paquete bash con el estado original conocido de estos archivos almacenados en una base de datos. Se han identificado los cambios realizados en /bin/bash.

Es posible verificar la integridad de todos los paquetes instalados en el sistema agregando la opción 'a' (--all) después de 'V' (--verify)

La opción -verify realiza una serie de pruebas en cada archivo; Cuando una prueba es positiva, se utilizan un número de caracteres (enumerados a continuación) para identificar los errores:
Carácter de retorno Descripción de error
. La prueba fue exitosa
? La prueba no pudo ser realizada
S El tamaño del archivo ha cambiado
M El modo de permiso o el tipo de archivo ha cambiado
5 La suma MD5 del archivo ha cambiado
D Número de dispositivo principal / menor número de coincidencia
L Enlace simbólico roto
U El propietario del usuario del archivo ha cambiado
G El propietario del grupo del archivo ha cambiado
T El mtime (tiempo modificado) ha cambiado

Más allá: Creación de paquetes RPM (no para el propósito del examen LPI)

El código fuente de muchos paquetes RPM también está disponible como paquete RPM y se usará para construir un paquete binario. La convención de nomenclatura es:
  • name-versión-release.src.rpm
Estos paquetes contienen al menos dos archivos, el tarball con el código y un archivo spec. El archivo spec contiene instrucciones para parchear, compilar y construir el paquete RPM. Si el código necesita ser remendado antes de la compilación, los parches se incluyen en el paquete de origen.

Hay tres formas diferentes de crear un paquete RPM. Asumiremos que tenemos un paquete llamado name-versión-release.src.rpm.

Para que estos métodos funcionen, primero debe instalar el paquete rpm-build

Método 1:
Instale el paquete fuente RPM con:


Esto copiará archivos a los siguientes directorios:
/usr/src/redhat/SPECS
/usr/src/redhat/SOURCE

En el directorio /usr/src/redhat/SPECS existe ahora un archivo denominado name.spec (donde 'name' es el nombre del paquete). Para comenzar a construir el paquete compilado, que es name-version-release.i386.rpm, tecleamos el siguiente comando:


Esto iniciará una serie de secuencias de comandos. El archivo tarball de /usr/src/redhat/SOURCES se descomprimirá en /usr/src/redhat/BUILD.

Si la compilación tiene éxito, el paquete binario incorporado se guardará en /usr/src/redhat/RPMS/. Hay diferentes subdirectorios correspondientes a varios modelos de CPU / generaciones. Si la compilación no involucra características específicas de estos chips, entonces el paquete se guardará en el directorio de la notación.

Método 2:
Este método activa la misma cadena de eventos que la anterior pero se inicia con el siguiente comando:


Método 3:
En algunos casos, los desarrolladores distribuirán un tarball junto con un archivo de especificaciones. Si el tarball se llama nameversion-release.tar.gz, puede buscar un archivo .spec con lo siguiente:


Si el tarball tiene un archivo spec, entonces puede crear un paquete RPM escribiendo:

Publicar un comentario

0 Comentarios