Bienvenidos a un nuevo post en ByteMind. En este caso vamos a dar varios ejemplos para RPM. El comando RPM se utiliza para instalar, desinstalar, actualizar, consultar, enumerar y verificar paquetes RPM en su sistema Linux. RPM significa Red Hat Package Manager.
Con el privilegio de root, puede usar el comando rpm con las opciones apropiadas para administrar los paquetes de software RPM.
En este artículo, revisemos 15 ejemplos prácticos del comando rpm.
Tomaremos como ejemplo el paquete openssl creado previamente por nosotros y explicado en el post Como construir tu propio paquete rpm
Índice
1. Instalar un paquete RPM
El nombre de archivo RPM tiene nombre de paquete, versión, release y nombre de arquitectura.
Por ejemplo, en el archivo bytemind-openssl-1.1.1-1.x86_64.rpm:
- bytemind-openssl – Nombre del paquete
- 1.1.1 – Versión
- 1 – Release
- x86_64 – Arquitectura
Cuando instala un RPM, comprueba si su sistema es adecuado para el software que contiene el paquete RPM, determina dónde instalar los archivos ubicados dentro del paquete rpm, los instala en su sistema y agrega ese software en su base de datos de paquetes RPM instalados.
El siguiente comando rpm instala el paquete bytemind-openssl.
1 2 3 4 |
# rpm -ivh bytemind-openssl-1.1.1-1.x86_64.rpm Preparando... ################################# [100%] Actualizando / instalando... 1:bytemind-openssl-1.1.1-1 ################################# [100%] |
Veamos las opciones del anterior comando:
- -i -> instala un paquete
- -v -> verbose
- -h -> imprime marcas hash a medida que se desempaqueta el archivo del paquete.
2. Consulta todos los paquetes RPM usando rpm -qa
Puede usar el comando rpm para consultar todos los paquetes instalados en su sistema.
1 2 3 4 5 |
# rpm -qa xorg-x11-fonts-Type1-7.5-9.el7.noarch kbd-legacy-1.15.5-15.el7.noarch java-1.8.0-openjdk-headless-1.8.0.212.b04-0.el7_6.x86_64 ... |
Expliquemos las opciones utilizadas:
- -q -> operación de consulta
- -a -> consulta todos los paquetes instalados
Podemos buscar uno en concreto utilizando grep:
1 2 |
# rpm -qa | grep bytemind bytemind-openssl-1.1.1-1.x86_64 |
3. Consultar un paquete RPM particular usando rpm -q
El ejemplo anterior enumera todos los paquetes instalados actualmente. Después de la instalación de un paquete para verificar la instalación, puede consultar un paquete en particular y verificar como se muestra a continuación.
1 2 3 4 5 |
# rpm -q bytemind-openssl bytemind-openssl-1.1.1-1.x86_64 # rpm -q bytemind package bytemind is not installed |
Nota: Para consultar un paquete, debe especificar el nombre exacto del paquete. Si el nombre del paquete es incorrecto, el comando rpm informará que el paquete no está instalado.
4. Consultar paquetes RPM en varios formatos usando rpm –queryformat
El comando Rpm proporciona una opción –queryformat, que le permite dar los nombres de las etiquetas de encabezado para enumerar los paquetes.
Incluya la etiqueta del encabezado con en %{}.
1 2 |
# rpm -qa --queryformat '%{name}-%{version}-%{release} %{size}\n' | grep bytemind bytemind-openssl-1.1.1-1 20135621 |
5. Consultar a que paquete pertenece un fichero
Digamos que tenemos una lista de archivos y nos gustaría saber qué paquete posee dichos ficheros.
El siguiente ejemplo muestra que el archivo /opt/bytemind-openssl/openssl.cnf es parte del paquete rpm bytemind-openssl-1.1.1-1.x86_64.
1 2 |
# rpm -qf /opt/bytemind-openssl/openssl.cnf bytemind-openssl-1.1.1-1.x86_64 |
Expliquemos las nuevas opciones utilizadas:
- -f -> nombre del archivo
6. Localizar la documentación de un paquete que posee un archivo
Para conocer la lista de documentaciones para un fichero en concreto, el siguiente comando proporciona la ubicación de todas las páginas del manual relacionadas con dicho paquete.
1 2 3 |
# rpm -qdf /opt/bytemind-openssl/bin/openssl /opt/bytemind-openssl/share/man/openssl.1 ... |
- -d -> hace referencia a la documentación.
7. Información sobre el paquete RPM instalado
El comando rpm proporciona mucha información sobre un paquete instalado usando rpm -qi como se muestra a continuación:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# rpm -qi bytemind-openssl Name : bytemind-openssl Version : 1.1.1 Release : 1 Architecture: x86_64 Install Date: vie 20 dic 2019 12:34:32 CET Group : System Environment/Libraries Size : 20135621 License : OpenSSL Signature : (none) Source RPM : bytemind-openssl-1.1.1-1.src.rpm Build Date : vie 20 dic 2019 11:36:53 CET Build Host : splunk.local Relocations : (not relocatable) Packager : ByteMind URL : http://www.openssl.org/ Summary : Secure Sockets Layer and cryptography libraries and tools Description : The OpenSSL Project is a collaborative effort to develop a robust, commercial-grade, fully featured, and Open Source toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) protocols as well as a full-strength general purpose cryptography library. The project is managed by a worldwide community of volunteers that use the Internet to communicate, plan, and develop the OpenSSL tookit and its related documentation. |
Si tenemos un fichero RPM que queremos instalar, podemos obtener información del mismo antes de instalarlo de la siguiente forma:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# rpm -qip bytemind-openssl-1.1.1-1.x86_64.rpm Name : bytemind-openssl Version : 1.1.1 Release : 1 Architecture: x86_64 Install Date: (not installed) Group : System Environment/Libraries Size : 20135621 License : OpenSSL Signature : (none) Source RPM : bytemind-openssl-1.1.1-1.src.rpm Build Date : vie 20 dic 2019 11:36:53 CET Build Host : splunk.local Relocations : (not relocatable) Packager : ByteMind URL : http://www.openssl.org/ Summary : Secure Sockets Layer and cryptography libraries and tools Description : The OpenSSL Project is a collaborative effort to develop a robust, commercial-grade, fully featured, and Open Source toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) protocols as well as a full-strength general purpose cryptography library. The project is managed by a worldwide community of volunteers that use the Internet to communicate, plan, and develop the OpenSSL tookit and its related documentation. |
Expliquemos las nuevas opciones utilizadas:
- -i -> ver información sobre un rpm
- -p -> especifica un nombre de paquete
8. Listar todos los archivos en un paquete
Para enumerar el contenido de un paquete RPM, utilizaremos el siguiente comando, que enumerará los archivos sin extraerlos a la carpeta del directorio local.
1 2 3 4 5 6 7 8 |
# rpm -qlp bytemind-openssl-1.1.1-1.x86_64.rpm /opt/bytemind-openssl /opt/bytemind-openssl/bin /opt/bytemind-openssl/bin/c_rehash /opt/bytemind-openssl/bin/openssl /opt/bytemind-openssl/certs /opt/bytemind-openssl/ct_log_list.cnf ... |
Explicamos las nuevas opciones:
- q -> consulta el archivo rpm
- l -> enumerar los archivos en el paquete
También se pueden extraer los ficheros del paquete RPM con rpm2cpio como veremos en un futuro post.
9. Enumerar los paquetes de dependencia
Para ver la lista de paquetes de los que depende este paquete, podemos utilizar el siguiente comando:
1 2 3 4 |
# rpm -qpR bytemind-openssl-1.1.1-1.x86_64.rpm /usr/bin/env /bin/sh ... |
10. Comprobar el estado de los archivos en un paquete
El siguiente comando se utiliza para conocer el estado (instalado, reemplazado o normal) de todos los archivos en un paquete RPM.
1 2 3 4 5 6 7 8 9 10 |
# rpm -qsp bytemind-openssl-1.1.1-1.x86_64.rpm normal /opt/bytemind-openssl normal /opt/bytemind-openssl/bin normal /opt/bytemind-openssl/bin/c_rehash normal /opt/bytemind-openssl/bin/openssl normal /opt/bytemind-openssl/certs normal /opt/bytemind-openssl/ct_log_list.cnf normal /opt/bytemind-openssl/ct_log_list.cnf.dist normal /opt/bytemind-openssl/include ... |
11. Verifique un paquete RPM particular
La verificación de un paquete compara información sobre los archivos instalados en el paquete con información sobre los archivos obtenidos de los metadatos del paquete almacenados en la base de datos rpm.
1 2 3 4 5 6 7 |
# rpm -pV bytemind-openssl-1.1.1-1.x86_64.rpm S.5....T /opt/bytemind-openssl S.5....T /opt/bytemind-openssl/bin S.5....T /opt/bytemind-openssl/bin/c_rehash S.5....T /opt/bytemind-openssl/bin/openssl S.5....T /opt/bytemind-openssl/certs ... |
Expliquemos las opciones utilizadas:
- -V -> es para verificación
- -p -> se usa para especificar un nombre de paquete para verificar.
Los caracteres indicados explican lo siguiente:
- S -> el tamaño es diferente
- M -> el modo es diferente (incluye permisos y tipo de archivo=
- 5 -> el md5 es diferente
- D -> el número de dispositivo no coincide
- L -> la ruta no coincide
- U -> el usuario propietario es diferente
- G -> el grupo propietario es diferente
- T -> el tiempo es diferente
12. Verificar la propiedad de un fichero
El siguiente comando verifica el paquete que posee el nombre dado
1 2 |
# rpm -Vf /opt/bytemind-openssl/bin/openssl S.5....T /opt/bytemind-openssl/bin/openssl |
13. Actualizar un paquete con RPM
Actualizar un paquete es similar a la instalación, per eliminará automáticamente las versiones existentes del mismo antes de instalar uno nuevo. En caso de no existir el paquete, no hará nada.
1 2 3 |
# rpm -Uvh bytemind-openssl-1.1.1-2.x86_64.rpm Preparando... ################################# [100%] Actualizando... 1:bytemind-openssl-1.1.1-2 ################################# [100%] |
14. Desinstalar un paquete RPM
Para eliminar un paquete utilizaremos la opción -e seguida del nombre completo del paquete:
1 |
# rpm -e bytemind-openssl |
15. Verificar todos los ficheros de todos los paquetes instalados
Para ello utilizaremos las opciones V y a como en el siguiente ejemplo:
1 2 3 4 5 |
# rpm -Va S.5....T. c /etc/rsyslog.conf S.5....T. c /etc/sudoers S.5....T. c /root/.bash_profile ... |
Esto ha sido todo por el momento. Espero que les ayude en su día a día y tienen disponible la sección de comentarios para exponer sus ideas y / o dudas.