Gestión de paquetes Red Hat: rpm, yum y dnf en CentOS y RHEL
El Red Hat Package Manager y YUM son poderosos administradores de paquetes que permiten al administrador instalar, eliminar y obtener información sobre paquetes. Es un método de distribución de software ampliamente usado en varias distribuciones de Linux, como Red Hat Enterprise Linux, CentOS y Fedora.
La Gestión de Paquetes Red Hat RPM y YUM posibilita instalar paquetes, realizar actualizaciones de software, grupos de software y decenas de tareas más. Es tan poderoso como dpkg y apt-get.
Este administrador de paquetes realiza de forma simple la instalación, mantenimiento y eliminación de paquetes de software.
Cada paquete rpm contiene programas binarios, archivos de configuración, documentación e información sobre cómo deben ser instalados y sus dependencias.
Esta utilidad mantiene una base de datos de todos los paquetes instalados y sus archivos, control de versiones y dependencias.
En algunas situaciones especiales la base de datos puede corromperse. El administrador de paquetes cuenta con funciones especiales para recuperar su integridad.
Los paquetes rpm acompañan la siguiente nomenclatura:

- Nombre_del_paquete: Así como en los paquetes Debian, un paquete rpm tiene un nombre corto que describe su contenido. Si se utiliza más de una palabra se utiliza el guion;
- Versión del Software: Cada archivo rpm tiene su versión que puede variar de acuerdo con los paquetes. Generalmente es numérica y se separa del nombre por un guion;
- Distribución del Software: Cada archivo también puede tener una distribución o empaquetado diferente;
- Arquitectura: El paquete rpm suele incluir el nombre de la arquitectura para la cual fue compilado;
- Sufijo: Utiliza la terminación .rpm para fácil identificación.
También podemos encontrar paquetes con nombres en el formato paquete-versión.src.rpm. Estos paquetes contienen los archivos fuente de un software y son, en su gran mayoría, independientes de arquitectura.
El administrador de paquetes rpm es utilizado por varias distribuciones de Linux. Pero los paquetes pueden diferir en la información adicional de una distribución a otra. Procure siempre utilizar paquetes hechos específicamente para su distribución.
Este administrador también realiza el control de dependencias entre los paquetes. Contienen información de las dependencias de cada aplicación, y esta información se utiliza durante su instalación o eliminación.
Caso la instalación de un nuevo paquete requiera otro, el rpm alertará al administrador.
La herramienta rpm
El comando rpm es responsable de la instalación, eliminación, actualización y conversión de paquetes. Este comando está organizado primero en modos de operación, que pueden ser: consulta, verificación, integridad, instalación, eliminación, actualización y reconstrucción de la base de datos rpm. Cada modo de operación puede o no contener varias opciones disponibles.
Los modos de operación más frecuentes son:
Para consultar la base de datos del rpm
# rpm {-q|—query} [opciones de consulta] nombre_del_paquete
Ejemplo:
# rpm –q bash
bash-2.05b-207
Para verificar el estado de los paquetes con rpm
# rpm {-V|—verify} nombre_del_paquete
Ejemplo:
# rpm -V snort-2.0.1-98.i586.rpm
package snort-2.0.1-98.i586.rpm is not installed
Para verificar la firma e integridad de los paquetes con rpm
# rpm {-K|—checksig} nombre_del_paquete
Ejemplo:
# rpm -K libpcap-0.7.2-37.i586.rpm
libpcap-0.7.2-37.i586.rpm: sha1 md5 gpg OK
Para instalar un nuevo paquete con rpm:
# rpm {-i|—install} [opciones de instalación] nombre_del_paquete
Ejemplo:
# rpm –i libpcap-0.7.2-37.i586.rpm
Para instalar un nuevo paquete mostrando detalles de la instalación:
# rpm –ivh libpcap-0.7.2-37.i586.rpm
Preparing... ########################################### [100%]
1:libcap ########################################### [100%]
Para actualizar un paquete con rpm:
# rpm {-U|—upgrade} [opciones de instalación] nombre_del_paquete
Ejemplo:
# rpm -U libpcap-0.7.2-37.i586.rpm
package libpcap-0.7.2-37 is already installed
Para eliminar un paquete con rpm:
# rpm {-e|—erase} [opciones de eliminación] nombre_del_paquete
Ejemplo:
# rpm –e libpcap-0.7.2-37.i586.rpm
Para reconstruir la base de datos RPM:
# rpm {—initdb|—rebuilddb}
Ejemplo:
# rpm —initdb
Para consultar las dependencias de un paquete con rpm:
# rpm {—qpR }
Ejemplo:
# rpm —qpR BitTorrent-5.2.2-1-Python2.4.noarch.rpm
/usr/bin/python2.4
python >= 2.3
python(abi) = 2.4
python-crypto >= 2.0
python-psyco
python-twisted >= 2.0
python-zopeinterface
rpmlib(CompressedFileNames) = 2.6
Para instalar un paquete ignorando las dependencias (algo muy estúpido de hacer):
# rpm {—ivh --nodeps }
Ejemplo:
# rpm -ivh --nodeps BitTorrent-5.2.2-1-Python2.4.noarch.rpm
Preparing... ########################################### [100%]
1:BitTorrent ########################################### [100%]
Para listar los paquetes rpm instalados recientemente:
# rpm {—qa --last }
Ejemplo:
# rpm -qa --last
kernel-headers.x86_64 Sex 06 Mar 2019 11:55:01 BRT
graphviz-gd.x86_64 Sex 06 Mar 2019 11:55:00 BRT
file-devel.x86_64 Sex 06 Mar 2019 11:55:00 BRT
Para saber a qué paquete rpm pertenece un archivo:
# rpm {—qf archivo }
Ejemplo:
# rpm -qf /usr/bin/htpasswd
httpd24-tools-2.4.10-15.58.amzn1.x86_64
Para obtener información de un paquete instalado específico:
# rpm {—qi nombre_del_paquete }
Ejemplo:
# rpm -qi httpd24
Name : httpd24
Version : 2.4.10
Release : 15.58.amzn1
Architecture: x86_64
Install Date: Sex 13 Fev 2015 21:56:14 BRST
Group : System Environment/Daemons
Size : 3792099
Para verificar la integridad de los archivos instalados con la base de datos de paquetes:
# rpm {—Va }
Ejemplo:
# rpm -Va
S.5....T. c /etc/sysconfig/svnserve
....L.... c /etc/localtime
..?...... /usr/sbin/glibc_post_upgrade.x86_64
S.5....T. c /etc/httpd/conf/httpd.conf
..?...... /usr/sbin/suexec
Las opciones de consulta de información de paquetes más frecuentes son:
- -a: Lista todos los paquetes instalados en el sistema;
- -f archivo: Lista el nombre del paquete que contiene el archivo buscado;
- -p nombredepaquete: Muestra si un paquete determinado está instalado;
- -i nombredepaquete: Muestra información adicional sobre un paquete determinado;
- -l nombredepaquete: Muestra la lista de archivos que contiene un paquete;
- -R nombredepaquete: Muestra la lista de dependencias que necesita un paquete para ser instalado.
Las opciones de instalación y actualización de paquetes más frecuentes son:
- —force: Esta opción fuerza la instalación de un paquete y sus archivos incluso si ya está instalado. Esta opción incluso fuerza la instalación de un paquete más antiguo sobre uno más nuevo;
- -h: Esta opción muestra el progreso de la instalación;
- —nodeps: Esta opción deshabilita la verificación de dependencias para la instalación de un paquete;
- -v: Muestra información adicional durante la instalación y actualización de paquetes;
- -vv: Muestra mucha más información durante la instalación y actualización de paquetes. Generalmente utilizada por desarrolladores.
Las opciones de desinstalación de paquetes son:
- —nodeps: Deshabilita la verificación de dependencias, desinstalando el paquete incluso si es necesario para otros;
- —test: Prueba la eliminación del paquete, sin eliminarlo realmente. Es útil para probar si la eliminación del paquete va a causar algún daño al sistema o aplicación.
Al actualizar un paquete a una versión más nueva, prefiera usar el modo –U. Así el paquete más antiguo será eliminado, el paquete nuevo será instalado y las configuraciones serán mantenidas.
Herramienta YUM
Yum es un acrónimo para Yellow dog Updater, Modified. Es una herramienta utilizada para gestionar la instalación y eliminación de paquetes en distribuciones Linux que utilizan el sistema RPM.
Es un gestor de paquetes de archivos similar al APT-GET que maneja automáticamente las dependencias calculándolas y resolviendo lo que se debe hacer para tratarlas.
Posee un archivo de configuración que especifica qué repositorios debe utilizar YUM para buscar y descargar los paquetes RPM.
No siempre un Linux basado en RPM tendrá el gestor de paquetes YUM instalado. Si es necesario instalar YUM, se puede obtener en el sitio http://yum.baseurl.org.
El comando para la instalación es:
# rpm -ivh yum.rpm
YUM necesita que configures los repositorios de paquetes en el archivo de configuración yum.conf.
Ejemplo:
# vi /etc/yum.conf
[fedora-us-3-core]
name=Fedora Core 3 — Fedora US mirror
baseurl=http://SERVERNAME/fedora/fedora/$releasever/$basearch/RPMS.os
[fedora-us-3-updates]
name=Fedora Core 3 Updates — Fedora US mirror
baseurl=http://SERVERNAME/fedora/fedora/$releasever/$basearch/RPMS.updates
Además del archivo de configuración /etc/yum.conf, YUM permite colocar archivos de configuración de repositorios en el directorio /etc/yum.repos.d/. En este directorio se encuentran las configuraciones de cada repositorio.
Puedes agregar repositorios extra o de software en "pruebas beta" a la lista de repositorios de YUM.
Algunos comandos de yum:
- yum list: Lista todos los paquetes disponibles;
- yum check-update o yum list updates: Verifica si hay paquetes disponibles para una actualización;
- yum update: Realiza la actualización de su sistema;
- yum install <paquete(s)>:Instala un paquete específico y sus dependencias;
- yum remove <paquete(s)>: Elimina un paquete específico
- yum info < paquete >: Muestra información básica de un paquete determinado.
Vea los ejemplos:
Para instalar un paquete con yum:
# yum install postgresql
Resolving Dependencies
Install 2 Package(s)
Is this ok [y/N]: y
Package(s) data still to download: 3.0 M
(1/2): postgresql-9.0.4-5.fc15.x86_64.rpm | 2.8 MB 00:11
(2/2): postgresql-libs-9.0.4-5.fc15.x86_64.rpm | 203 kB 00:00
------------------------------------------------------------------
Total 241 kB/s | 3.0 MB 00:12
Running Transaction
Installing : postgresql-libs-9.0.4-5.fc15.x86_64 1/2
Installing : postgresql-9.0.4-5.fc15.x86_64 2/2
Complete!
Para actualizar los paquetes instalados con yum:
# yum update
Plugins carregados: priorities, update-motd, upgrade-helper
amzn-main/latest
Resolviendo dependências
--> Ejecutando verificación de la transacción
---> El paquete aws-cli.noarch 0:1.7.5-1.2.amzn1 será actualizado
---> El paquete aws-cli.noarch 0:1.7.12-1.3.amzn1 será una actualización
--> Resolución de dependências finalizada
Dependências resueltas
==============================================================
Package Arq. Versión Repo Tam.
==============================================================
Instalando:
kernel x86_64 3.14.34-27.48.amzn1 amzn-updates 16 M
Actualizando:
aws-cli noarch 1.7.12-1.3.amzn1 amzn-updates 604 k
Resumen de la transacción
============================================================== Instalar 1 Package (+4 Dependent packages)
Upgrade 1 Package
Tamaño total de la descarga: 16 M
Is this ok [y/d/N]:
Para eliminar un paquete con yum:
# yum remove postgresql
Resolving Dependencies
---> Package postgresql.x86_64 0:9.0.4-5.fc15 will be erased
Is this ok [y/N]: y
Running Transaction
Erasing : postgresql-9.0.4-5.fc15.x86_64 1/1
Removed:
postgresql.x86_64 0:9.0.4-5.fc15
Complete!
Para buscar todos los paquetes con una determinada palabra
# yum search firefox
Loaded plugins: langpacks, presto, refresh-packagekit
============== N/S Matched: firefox ======================
firefox.x86_64 : Mozilla Firefox Web browser
gnome-do-plugins-firefox.x86_64 : gnome-do-plugins for firefox
mozilla-firetray-firefox.x86_64 : System tray extension for firefox
mozilla-adblockplus.noarch : Adblocking extension for Mozilla Firefox
mozilla-noscript.noarch : JavaScript list extension for Mozilla Firefox
Name and summary matches only, use "search all" for everything.
Para obtener información sobre un paquete determinado usando yum:
# yum info mysql
yum info mysql
Plugins carregados: priorities, update-motd, upgrade-helper
newrelic 59/59
Paquetes instalados
Nombre : mysql
Arquitectura : noarch
Versión : 5.5
Lanzamiento : 1.6.amzn1
Tamaño : 0.0
Repo : installed
Para ver todos los paquetes disponibles en el repositorio del yum:
# yum list
Paquetes instalados
GeoIP.x86_64 1.4.8-1.5.amzn1 @amzn-main
GeoIP-devel.x86_64 1.4.8-1.5.amzn1 @amzn-main
PyYAML.x86_64 3.10-3.6.amzn1 installed
acl.x86_64 2.2.49-6.9.amzn1 installed
acpid.x86_64 1.0.10-2.1.6.amzn1 installed
alsa-lib.x86_64 1.0.22-3.9.amzn1 installed
apr.x86_64 1.5.0-2.11.amzn1 @amzn-updates
(…)
Para saber a qué paquete pertenece un determinado archivo:
# yum provides /etc/sysconfig/nfs
Plugins cargados: priorities, update-motd, upgrade-helper
1:nfs-utils-1.2.3-39.15.amzn1.x86_64 : NFS utilities and supporting clients and daemons for the kernel NFS server
Repo : amzn-main
Resultado desde:
Nombre de archivo : /etc/sysconfig/nfs
Para saber cuáles son los repositorios activos en YUM:
# yum repolist
id del repo nombre del repo estado
amzn-main/latest amzn-main-Base 5.019
amzn-updates/latest amzn-updates-Base 1.085
newrelic/x86_64 New Relic packages 59
repolist: 6.163
El comando yumdownloader
El comando yumdownloader descarga los archivos RPM de los repositorios de YUM. Es útil para descargar los paquetes para su posterior instalación, o cuando vas a instalar paquetes en varias máquinas, sin necesidad de descargar varias veces el mismo paquete.
Ejemplo:
$ yumdownloader httpd24
amzn-main/latest | 2.1 kB 00:00
amzn-updates/latest | 2.3 kB 00:00
httpd24-2.4.10-15.58.amzn1.x86_64.rpm | 1.3 MB 00:00
Aprende Red Hat Enterprise Linux con el Curso Preparatorio para RHCSA de Certificación Linux. Si ya tienes una cuenta, o quieres crear una, simplemente ingresa o crea tu usuario aquí.
¿Te gustó? Comparte
Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.