fbpx Gestión de paquetes Red Hat: rpm, yum y dnf en CentOS y RHEL | Certificação Linux

Gestión de paquetes Red Hat: rpm, yum y dnf en CentOS y RHEL

📅 07/03/2019 ⏱ 16 min ✍️ Uira Ribeiro
Linuxcomandoscómo-hacer
Gestión de paquetes Red Hat: rpm, yum y dnf en CentOS y RHEL
Exam Pass App — mais de 7.000 questões LPI, offline, em 5 idiomas, disponível no Android e na App Store
Disponible en
Google Play
Disponible en
App Store

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

Uira Ribeiro

Prof. Uirá Ribeiro

Chair do Board do Linux Professional Institute

Después de años viendo profesionales perder horas en tareas simples por no conocer las herramientas correctas de Linux, decidí enseñar.
Hoy soy autor de la mayoría de los Materiales de Aprendizaje oficiales de la LPI y mentor de más de 14,000 alumnos certificados.

Conoce mi historia completa →

Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.

Certificação Linux — a plataforma líder em certificações Linux no Brasil
WhatsApp