Uso de rpm.

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: https://www.alcancelibre.org

Licencia Creative Commons
© 1999-2026 Joel Barrios Dueñas. Este manual se distribuye bajo la licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional (CC BY-NC-SA 4.0). Usted es libre de compartir y adaptar el material bajo los siguientes términos: debe dar crédito al autor, no puede utilizarlo para fines comerciales y debe compartir las obras derivadas bajo la misma licencia. La licencia completa está disponible en https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.es.

Introducción

El gestor de paquetes rpm constituye una herramienta fundamental para la administración de sistemas basados en GNU/Linux. Comprender su funcionamiento permite gestionar el equipamiento lógico de manera eficiente, segura y confiable, habilidades esenciales tanto para administradores de sistemas como para usuarios avanzados. A continuación, se explican sus fundamentos y procedimientos de uso más comunes.

Acerca de RPM

RPM (RPM Package Manager, anteriormente conocido como Red Hat Package Manager) es un sistema de gestión de paquetes de equipamiento lógico para GNU/Linux y está considerado en la Base Estándar para Linux (Linux Standard Base o LSB). Este proyecto tiene el objetivo de desarrollar y promover estándares para mejorar la compatibilidad entre las distribuciones de GNU/Linux y permitir a las aplicaciones ser utilizadas en cualquier distribución.

RPM fue originalmente desarrollado por Red Hat, Inc. para su distribución de GNU/Linux y ha sido adoptado por muchas otras distribuciones y sistemas operativos.

RPM utiliza una base de datos que se almacena dentro del directorio /var/lib/rpm, la cual contiene toda la metainformación de los paquetes instalados en el sistema. Esta base de datos permite dar seguimiento a todos los componentes instalados, lo que facilita la instalación y desinstalación limpia de aplicaciones, programas, bibliotecas compartidas, etc., además de gestionar sus dependencias de manera eficiente.

⚠️ NOTA IMPORTANTE: El paquete rpm es un componente fundamental del sistema y se instala de manera obligatoria en ALDOS, AlmaLinux, Fedora™, Red Hat™ Enterprise Linux, Rocky Linux y sus derivadas. Desinstalar este paquete comprometería por completo la capacidad del sistema para gestionar su propio equipamiento lógico, una acción que carece de sentido incluso para pruebas de concepto pedagógicas.

Procedimientos

A continuación se presentan los procedimientos más comunes para gestionar paquetes con la herramienta rpm.

Reconstrucción de la base de datos de rpm

Existen escenarios donde la base de datos de RPM puede corromperse ―como por un sector dañado en la unidad de almacenamiento principal. Si el daño en el sistema de archivos lo permite, la base de datos se puede reconstruir ejecutando el siguiente mandato:

rpm --rebuilddb

⚠️ ADVERTENCIA: Ejecute este mandato sólo cuando sea estrictamente necesario. El procedimiento puede durar varios minutos y consumir una cantidad significativa de recursos del sistema. Reserve este procedimiento exclusivamente para situaciones donde exista evidencia clara e inequívoca de corrupción en la base de datos. Su ejecución preventiva o innecesaria, especialmente en sistemas estables, dista de ser una práctica recomendada y podría, en el peor de los casos, agravar un problema existente si el proceso se ve interrumpido.

Consulta de paquetes instalados en el sistema

Ejecute rpm con la opción -q para hacer una consulta ―query en inglés― en la base de datos por un nombre de paquete en particular. En el siguiente ejemplo se consulta si está instalado el paquete coreutils:

rpm -q coreutils

Lo anterior debe devolver una salida similar a la siguiente:

coreutils-8.32-39.el9.x86_64

Para consultar información detallada de un paquete, utilice las opciones -qi (query information). En este ejemplo se consulta el paquete coreutils:

rpm -qi coreutils

La salida será similar a esta:

Name        : coreutils
Version     : 8.32
Release     : 39.el9
Architecture: x86_64
Install Date: Mon Aug  4 21:39:39 2025
Group       : Unspecified
Size        : 5986602
License     : GPLv3+
Signature   : RSA/SHA256, Thu Mar 13 20:01:43 2025, Key ID d36cb86cb86b3716
Source RPM  : coreutils-8.32-39.el9.src.rpm
Build Date  : Wed Mar 12 06:50:36 2025
Build Host  : x64-builder01.almalinux.org
Packager    : AlmaLinux Packaging Team <packager@almalinux.org>
Vendor      : AlmaLinux
URL         : https://www.gnu.org/software/coreutils/
Summary     : A set of basic GNU tools commonly used in shell scripts
Description :
These are the GNU core utilities.  This package is the combination of
the old GNU fileutils, sh-utils, and textutils packages.

Para listar los archivos que componen un paquete instalado, utilice las opciones -ql (query list). El siguiente ejemplo lista los archivos del paquete coreutils:

rpm -ql coreutils

La salida será muy extensa, mostrando todos los archivos instalados por el paquete.

Para conocer a qué paquete pertenece un archivo específico en el sistema, use las opciones -qf (query file). Este ejemplo consulta el archivo /usr/bin/cp:

rpm -qf /usr/bin/cp

La salida será similar a:

coreutils-8.32-39.el9.x86_64

Para listar todos los paquetes instalados en el sistema, utilice las opciones -qa (query all):

rpm -qa

Dado que la lista es muy extensa, se recomienda usar un paginador como less:

rpm -qa | less

Para buscar paquetes específicos, combine rpm -qa con grep. Este ejemplo busca todos los paquetes instalados cuyo nombre contenga la cadena utils:

rpm -qa | grep utils

Para ver los paquetes ordenados cronológicamente (de más reciente a más antiguo), agregue la opción --last:

rpm -qa --last | less

Verificación de la integridad de paquetes instalados

Para verificar si los archivos instalados por un paquete han sido modificados, alterados o eliminados, ejecute rpm con la opción -V. Este mandato compara las sumas de verificación (MD5) y otros atributos de los archivos con los registros de la base de datos. En el siguiente ejemplo se verifica el paquete audit-libs:

rpm -V audit-libs

Si ningún archivo ha sido modificado, el mandato sólo devolverá el símbolo del sistema (prompt).

Ahora, modifique deliberadamente un archivo de este paquete para ver el cambio:

touch /etc/libaudit.conf

Vuelva a ejecutar la verificación:

rpm -V audit-libs

La salida indicará que el archivo /etc/libaudit.conf ha sido modificado:

.......T.  c /etc/libaudit.conf

Para verificar todos los paquetes instalados en el sistema, utilice las opciones -Va:

rpm -Va

Este mandato puede generar una salida extensa en sistemas con mucho tiempo de uso, mostrando todos los archivos que difieren de su estado original de instalación.

Instalación de paquetes

Los distribuidores serios de equipamiento lógico en formato RPM utilizan firmas digitales PGP/GnuPG para garantizar la autenticidad e integridad de sus paquetes. Esto impide que paquetes alterados o dañados sean instalados inadvertidamente.

Importación de claves de firma

Las claves públicas de los almacenes de software suelen estar disponibles en línea. Para importar la clave de firma de Alcance Libre, ejecute:

rpm --import http://mirror0.alcancelibre.org/AL-RPM-KEY

Descarga y verificación de un paquete

Descargue un paquete de ejemplo, jailkit, distribuido por Alcance Libre:

wget http://mirror0.alcancelibre.org/server/9/x86_64/jailkit-2.23-2.el9.x86_64.rpm

Antes de instalarlo, es crucial verificar su firma digital e integridad con la opción -K:

rpm -K jailkit-2.23-2.el9.x86_64.rpm

Si el paquete es válido y está firmado con una clave importada en el sistema, la salida será:

jailkit-2.23-2.el9.x86_64.rpm: digests SIGNATURES OK

Si el paquete está corrupto o la firma es inválida, se mostrará un error.

Consulta de información de un paquete sin instalar

Puede consultar la información de un paquete .rpm descargado con las opciones -qpi (query package information):

rpm -qpi jailkit-2.23-2.el9.x86_64.rpm

Para listar los archivos que el paquete instalará, use las opciones -qpl (query package list):

rpm -qpl jailkit-2.23-2.el9.x86_64.rpm

Para consultar las dependencias que requiere el paquete, utilice -qp --requires:

rpm -qp --requires jailkit-2.23-2.el9.x86_64.rpm

Instalación básica y manejo de dependencias

Para instalar un paquete, use las opciones -ivh (install, verbose, hash), que muestran un progreso detallado:

rpm -ivh jailkit-2.23-2.el9.x86_64.rpm

Si el paquete ya está instalado, rpm informará del error. Si faltan dependencias, mostrará un listado de éstas. Para instalar el paquete y resolver automáticamente sus dependencias desde los almacenes de software configurados, utilice dnf (o yum en ALDOS):

dnf -y localinstall jailkit-2.23-2.el9.x86_64.rpm

Actualización y reinstalación

Para instalar o actualizar un paquete a una versión más reciente, utilice las opciones -Uvh (update, verbose, hash):

rpm -Uvh jailkit-2.23-2.el9.x86_64.rpm

Para reinstalar forzosamente un paquete (útil para restaurar archivos de configuración por defecto), agregue la opción --force a -ivh:

rpm -ivh --force jailkit-2.23-2.el9.x86_64.rpm

Omisión de guiones de pre/post-instalación

Algunos paquetes incluyen guiones (scripts) que se ejecutan antes o después de la instalación. Para omitir la ejecución de estos guiones, añada la opción --noscripts:

rpm -Uvh --noscripts jailkit-2.23-2.el9.x86_64.rpm

Consulta de dependencias suaves (Recommends y Suggests)

A partir de la versión 4.12 de rpm, se introdujo soporte para dependencias suaves, similares a los campos Recommends y Suggests en otros gestores de paquetes. Estas dependencias indican paquetes recomendados u opcionales que mejoran la funcionalidad del software principal, pero que no son estrictamente necesarios para su funcionamiento básico.

Para consultar estas dependencias en un paquete .rpm (con rpm >= 4.12), puede utilizar:

rpm -qp --recommends nombre-del-paquete.rpm
rpm -qp --suggests nombre-del-paquete.rpm

Nota importante: La distribución ALDOS utiliza actualmente rpm versión 4.11.3, la cual dista de ser compatible con estas opciones. Esta información se incluye a modo de referencia para futuras actualizaciones o para su uso en otras distribuciones modernas como AlmaLinux 9/10, Rocky Linux 9/10 o RHEL 9/10, que sí pueden incluir versiones de rpm con este soporte.

Recuperación de permisos originales

Si se modifican los permisos de archivos pertenecientes a un paquete RPM, es posible restaurarlos a sus valores originales registrados en la base de datos. El siguiente ejemplo demuestra el proceso con el archivo /usr/bin/cp:

Primero, observe sus permisos actuales:

ls -l /usr/bin/cp

Cambie los permisos del archivo:

chmod 700 /usr/bin/cp

Verifique el cambio:

ls -l /usr/bin/cp

Confirme a qué paquete pertenece el archivo:

rpm -qf /usr/bin/cp

Finalmente, restaure los permisos originales de todos los archivos de ese paquete usando la opción --setperms:

rpm --setperms coreutils

Verifique que los permisos se hayan restaurado:

ls -l /usr/bin/cp

Desinstalación de paquetes

Para desinstalar un paquete, utilice la opción -e (erase). En el siguiente ejemplo se desinstala wget:

rpm -e wget

Si la operación es exitosa, sólo se devolverá el símbolo del sistema.

Si el paquete es requerido por otros paquetes instalados, rpm mostrará una lista de dependencias que lo impiden. Por ejemplo, intentar desinstalar python3 fallará espectacularmente:

rpm -e python3

🚨 NOTA: Por razones obvias, el paquete python3 jamás debe desinstalarse en un sistema productivo, pues es una dependencia crítica de numerosas herramientas del sistema.

Desinstalación forzada (no recomendada)

Para desinstalar un paquete ignorando las dependencias que tiene sobre él ―una práctica altamente desaconsejada que puede romper el sistema―, utilice la opción --nodeps:

rpm -e --nodeps nombre-del-paquete

Evite siempre desinstalar paquetes que sean dependencia de otros, a menos que planee reinstalar inmediatamente un sustituto que cubra las mismas funcionalidades.