Cómo utilizar el comando RPM (con ejemplos)
RPM significa «Redhat Package Manager» y es una herramienta de gestión de paquetes de línea de comandos para el sistema operativo basado en RHEL/CentOS. Puedes instalar, desinstalar, actualizar, consultar y verificar paquetes mediante el comando RPM. Esta herramienta sólo funciona con paquetes construidos en formato .rpm. El comando RPM sólo puede instalar el paquete especificado, no puede instalar las dependencias necesarias para ese paquete.
En este tutorial, te mostraremos cómo utilizar el gestor de paquetes RPM con algunos ejemplos. Si buscas una guía sobre el nuevo gestor de paquetes de RedHat, DNF, echa un vistazo aquí:Gestión de paquetesde CentOS8 con DNF en la línea de comandos
Requisitos previos
- Un servidor que ejecute CentOS, RHEL o Fedora.
- Una contraseña de root configurada en tu servidor.
Sintaxis básica
La sintaxis básica del comando RPM se muestra a continuación:
rpm [OPTION] [PACKAGENAME]
Puedes listar todas las opciones disponibles con el comando RPM utilizando el siguiente comando:
rpm --help
Deberías ver la siguiente pantalla:
Instalar, actualizar y eliminar paquetes con RPM
Antes de instalar cualquier paquete RPM, puedes listar las dependencias de ese paquete con el siguiente comando:
rpm -qpR epel-release-latest-8.noarch.rpm
Salida:
warning: epel-release-latest-8.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 2f86d6a1: NOKEY config(epel-release) = 8-7.el8 redhat-release >= 8 rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(PayloadIsXz) <= 5.2-1
También puedes obtener la información de ese paquete con el siguiente comando:
rpm -qip epel-release-latest-8.noarch.rpm
Salida:
warning: epel-release-latest-8.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 2f86d6a1: NOKEY Name : epel-release Version : 8 Release : 7.el8 Architecture: noarch Install Date: (not installed) Group : System Environment/Base Size : 30269 License : GPLv2 Signature : RSA/SHA256, Thursday 10 October 2019 12:19:30 PM EDT, Key ID 21ea45ab2f86d6a1 Source RPM : epel-release-8-7.el8.src.rpm Build Date : Thursday 10 October 2019 12:16:18 PM EDT Build Host : buildvm-04.phx2.fedoraproject.org Relocations : (not relocatable) Packager : Fedora Project Vendor : Fedora Project URL : http://download.fedoraproject.org/pub/epel Bug URL : https://bugz.fedoraproject.org/epel-release Summary : Extra Packages for Enterprise Linux repository configuration Description : This package contains the Extra Packages for Enterprise Linux (EPEL) repository GPG key as well as configuration for yum.
Puedes instalar ese paquete con el siguiente comando:
rpm -ivh epel-release-latest-8.noarch.rpm
Salida:
warning: epel-release-latest-8.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 2f86d6a1: NOKEY Verifying... ################################# [100%] Preparing... ################################# [100%] Updating / installing... 1:epel-release-8-7.el8 ################################# [100%]
Puedes instalar cualquier paquete RPM sin ninguna dependencia utilizando el siguiente comando:
rpm -ivh --nodeps epel-release-latest-8.noarch.rpm
Para actualizar el paquete RPM instalado, ejecuta el siguiente comando:
rpm -Uvh epel-release-latest-8.noarch.rpm
Salida:
warning: epel-release-latest-8.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 2f86d6a1: NOKEY Verifying... ################################# [100%] Preparing... ################################# [100%] package epel-release-8-7.el8.noarch is already installed
Para eliminar el paquete RPM instalado, ejecuta el siguiente comando:
rpm -ev epel-release
Salida:
Preparing packages... epel-release-8-7.el8.noarch
Visualizar la información del paquete con RPM
Para mostrar la información detallada de cualquier paquete, ejecuta el siguiente comando:
rpm -ql epel-release
Salida:
/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 /etc/yum.repos.d/epel-playground.repo /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel.repo /usr/lib/systemd/system-preset/90-epel.preset /usr/share/doc/epel-release /usr/share/doc/epel-release/GPL /usr/share/doc/epel-release/README-epel-8-packaging.md
Puedes encontrar los archivos de configuración de cualquier paquete con el siguiente comando
rpm -qc httpd
Salida:
/etc/httpd/conf.d/autoindex.conf /etc/httpd/conf.d/userdir.conf /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.modules.d/00-base.conf /etc/httpd/conf.modules.d/00-dav.conf /etc/httpd/conf.modules.d/00-lua.conf /etc/httpd/conf.modules.d/00-mpm.conf /etc/httpd/conf.modules.d/00-optional.conf /etc/httpd/conf.modules.d/00-proxy.conf /etc/httpd/conf.modules.d/00-systemd.conf /etc/httpd/conf.modules.d/01-cgi.conf /etc/httpd/conf/httpd.conf /etc/httpd/conf/magic /etc/logrotate.d/httpd /etc/sysconfig/htcacheclean
Puedes mostrar más información sobre cualquier paquete con el siguiente comando:
rpm -qi httpd
Salida:
Name : httpd Version : 2.4.37 Release : 16.module_el8.1.0+256+ae790463 Architecture: x86_64 Install Date: Thursday 23 January 2020 11:48:36 PM EST Group : System Environment/Daemons Size : 5611291 License : ASL 2.0 Signature : RSA/SHA256, Monday 23 December 2019 05:22:02 PM EST, Key ID 05b555b38483c65d Source RPM : httpd-2.4.37-16.module_el8.1.0+256+ae790463.src.rpm Build Date : Monday 23 December 2019 03:46:30 PM EST Build Host : x86-02.mbox.centos.org Relocations : (not relocatable) Packager : CentOS Buildsys <[email protected]> Vendor : CentOS URL : https://httpd.apache.org/ Summary : Apache HTTP Server Description : The Apache HTTP Server is a powerful, efficient, and extensible web server.
Para encontrar el paquete desde el directorio o archivo con el siguiente comando
rpm -qf /etc/NetworkManager/
Salida:
NetworkManager-1.14.0-14.el8.x86_64 dhcp-client-4.3.6-30.el8.x86_64
Verificar el paquete con RPM
Para verificar cualquier paquete antes de instalarlo con el siguiente comando
rpm -Vp epel-release-latest-8.noarch.rpm
Salida:
warning: epel-release-latest-8.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 2f86d6a1: NOKEY
Para verificar todos los paquetes rpm instalados, ejecuta el siguiente comando:
rpm -Va
Salida:
.......T. c /etc/kdump.conf .M....... g /var/lib/plymouth/boot-duration .M....... g /var/cache/dnf/packages.db .....UG.. g /var/lib/sss/mc/group .....UG.. g /var/lib/sss/mc/initgroups .....UG.. g /var/lib/sss/mc/passwd .M....... c /etc/rc.d/rc.local .M....... c /etc/machine-id
Comprobar la información sobre el paquete instalado con RPM
Para verificar cualquier paquete si está instalado o no con el siguiente comando
Para verificar el paquete instalado, ejecuta el siguiente comando:
rpm -q epel-release
Si el paquete especificado está instalado, deberías ver la siguiente salida:
epel-release-8-7.el8.noarch
Para verificar el paquete que no está instalado, ejecuta el siguiente comando:
rpm -q mysql-server
Deberías obtener la siguiente salida:
package mysql-server is not installed
Para listar todos los paquetes que están instalados en tu sistema, ejecuta el siguiente comando:
rpm -qa
Salida:
dos2unix-7.4.0-3.el8.x86_64 platform-python-pip-9.0.3-13.el8.noarch geolite2-country-20180605-1.el8.noarch symlinks-1.4-19.el8.x86_64 python3-six-1.11.0-8.el8.noarch fontpackages-filesystem-1.44-22.el8.noarch rootfiles-8.1-22.el8.noarch polkit-0.115-6.el8.x86_64 xkeyboard-config-2.24-3.el8.noarch iwl6050-firmware-41.28.5.1-92.el8.1.noarch libmodulemd1-1.8.0-5.el8.x86_64 pkgconf-m4-1.4.2-1.el8.noarch iwl5000-firmware-8.83.5.1_1-92.el8.1.noarch samba-common-4.9.1-8.el8.noarch kbd-misc-2.0.4-8.el8.noarch
Para listar todos los paquetes instalados por nombre y tamaño, ejecuta el siguiente comando:
rpm -qa --queryformat '%{name} %{size}\n'
Salida:
dos2unix 682042 platform-python-pip 7746190 geolite2-country 3424334 symlinks 19682 python3-six 100282 fontpackages-filesystem 0 rootfiles 599
Buscar la página manual de cualquier paquete con RPM
Puedes ejecutar lo siguiente para conocer la lista de documentación de un paquete que posee un archivo o carpeta.
rpm -qdf /etc/NetworkManager/
Salida:
/usr/share/doc/NetworkManager/AUTHORS /usr/share/doc/NetworkManager/CONTRIBUTING /usr/share/doc/NetworkManager/NEWS /usr/share/doc/NetworkManager/README /usr/share/doc/NetworkManager/TODO /usr/share/doc/NetworkManager/examples/server.conf /usr/share/man/man1/nm-online.1.gz /usr/share/man/man1/nmcli.1.gz /usr/share/man/man5/NetworkManager.conf.5.gz /usr/share/man/man5/nm-settings-ifcfg-rh.5.gz /usr/share/man/man5/nm-settings-keyfile.5.gz /usr/share/man/man5/nm-settings.5.gz /usr/share/man/man5/nm-system-settings.conf.5.gz /usr/share/man/man7/nmcli-examples.7.gz /usr/share/man/man8/NetworkManager.8.gz /usr/share/doc/dhcp-client/README.dhclient.d /usr/share/doc/dhcp-client/dhclient-enter-hooks /usr/share/doc/dhcp-client/dhclient.conf.example /usr/share/doc/dhcp-client/dhclient6.conf.example /usr/share/man/man5/dhclient.conf.5.gz /usr/share/man/man5/dhclient.leases.5.gz /usr/share/man/man8/dhclient-script.8.gz /usr/share/man/man8/dhclient.8.gz
Conclusión
En el tutorial anterior, hemos aprendido a gestionar paquetes con RPM en el sistema operativo CentOS 8. Espero que esto te ayude a realizar las tareas cotidianas.