Cómo instalar paquetes RPM en Linux RedHat

En Linux RedHat y otras distribuciones basadas en RedHat, como pueden ser Fedora o CentOS, entre otras, la manera habitual de instalar software es a través de ficheros RPM (RedHat Package Manager).

Un fichero RPM contiene empaquetado el software que vamos a instalar.

El uso de RPM para instalar software en RedHat no es obligatorio pero sí es la manera más habitual de hacerlo. Obviamente, un fabricante puede desarrollar su propio instalador. Por ejemplo, una base de datos de Oracle.

¿Cómo instalar un paquete RPM en Linux RedHat?

En RedHat existe el comando «rpm» que sirve para instalar, actualizar o eliminar paquetes RPM, además de consultar si tenemos instalado alguno de ellos. Para ello, tenemos que ser root.

Veamos los parámetros básicos del comando «rpm»:

  • Instalar un paquete rpm:
rpm -i Nombre_del_paquete.rpm

Entendemos que el fichero RPM ya lo hemos descargado previamente.

  • Actualizar un paquete rpm:
rpm -U Nombre_del_paquete.rpm

Sirve para subir de versión un paquete de software.

Podemos actualizar más de un paquete a la vez, muy útil cuando un paquete requiere de otras dependencias previas antes de poder ser instalado:

rpm -U Nombre_del_paquete_1.rpm Nombre_del_paquete_2.rpm Nombre_del_paquete_3.rpm 
  • Consultar si ya tenemos instalado un paquete rpm:

A mi siempre me gusta utilizar el filtro grep, aunque no es obligatorio.

Aprende a usar los diferentes tipos de filtros de texto de Linux

rpm -qa |grep -i Nombre

rpm -qi paquete: Muestra información sobre el paquete
rpm -ql paquete: Nos da los ficheros que ha instalado el paquete
rpm -qc paquete: Conocemos, únicamente, los ficheros de configuración del paquete

  • Eliminar un paquete rpm:
rpm -e Nombre_del_paquete

¿Qué son las dependencias y por qué el comando rpm no es óptimo para instalar software en Linux RedHat?

Una dependencia significa que la instalación de un paquete requiere que, previamente, se haya instalado otro paquete.

El problema con el comando rpm es que no es capaz de resolver las dependencias requeridas y es demasiado tedioso descargarse cada una de las dependencias manualmente para luego instalarlas por orden. Es francamente complicado cuando existen muchas dependencias.

No obstante, podemos averiguar qué dependencias tiene un paquete de diferentes maneras:

COMANDO RPM

[root@server1# rpm -qp postgresql10-10.22-1PGDG.rhel8.x86_64.rpm --requires
warning: postgresql10-10.22-1PGDG.rhel8.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 442df0f8: NOKEY
/bin/sh
/bin/sh
/sbin/ldconfig
/usr/sbin/update-alternatives
/usr/sbin/update-alternatives
libc.so.6()(64bit)
libc.so.6(GLIBC_2.11)(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.15)(64bit)
libc.so.6(GLIBC_2.17)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libc.so.6(GLIBC_2.6)(64bit)
libc.so.6(GLIBC_2.7)(64bit)
libicu
libm.so.6()(64bit)
libm.so.6(GLIBC_2.2.5)(64bit)
libpq.so.5()(64bit)
libpthread.so.0()(64bit)
libpthread.so.0(GLIBC_2.2.5)(64bit)
libreadline.so.7()(64bit)
libz.so.1()(64bit)
postgresql10-libs(x86-64) = 10.22-1PGDG.rhel8
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1
rtld(GNU_HASH)
systemd
systemd
systemd
systemd
systemd-sysv
[root@server1]#


COMANDO YUM

[root@server1]# yum -q deplist postgresql10-10.22-1PGDG.rhel8.x86_64.rpm
package: postgresql10-10.22-1PGDG.rhel8.x86_64
  dependency: /bin/sh
  dependency: /bin/sh
  dependency: /sbin/ldconfig
  dependency: /usr/sbin/update-alternatives
  dependency: /usr/sbin/update-alternatives
  dependency: libc.so.6()(64bit)
  dependency: libc.so.6(GLIBC_2.11)(64bit)
  dependency: libc.so.6(GLIBC_2.14)(64bit)
  dependency: libc.so.6(GLIBC_2.15)(64bit)
  dependency: libc.so.6(GLIBC_2.17)(64bit)
  dependency: libc.so.6(GLIBC_2.2.5)(64bit)
  dependency: libc.so.6(GLIBC_2.3)(64bit)
  dependency: libc.so.6(GLIBC_2.3.4)(64bit)
  dependency: libc.so.6(GLIBC_2.4)(64bit)
  dependency: libc.so.6(GLIBC_2.6)(64bit)
  dependency: libc.so.6(GLIBC_2.7)(64bit)
  dependency: libicu
  dependency: libm.so.6()(64bit)
  dependency: libm.so.6(GLIBC_2.2.5)(64bit)
  dependency: libpq.so.5()(64bit)
  dependency: libpthread.so.0()(64bit)
  dependency: libpthread.so.0(GLIBC_2.2.5)(64bit)
  dependency: libreadline.so.7()(64bit)
  dependency: libz.so.1()(64bit)
  dependency: postgresql10-libs(x86-64) = 10.22-1PGDG.rhel8
  dependency: rpmlib(CompressedFileNames) <= 3.0.4-1
  dependency: rpmlib(FileDigests) <= 4.6.0-1
  dependency: rpmlib(PayloadFilesHavePrefix) <= 4.0-1
  dependency: rpmlib(PayloadIsXz) <= 5.2-1
  dependency: rtld(GNU_HASH)
  dependency: systemd
  dependency: systemd
  dependency: systemd
  dependency: systemd
  dependency: systemd-sysv
[root@server1]#


COMANDO DNF

[root@server1]# dnf -q deplist postgresql10-10.22-1PGDG.rhel8.x86_64.rpm
package: postgresql10-10.22-1PGDG.rhel8.x86_64
  dependency: /bin/sh
  dependency: /bin/sh
  dependency: /sbin/ldconfig
  dependency: /usr/sbin/update-alternatives
  dependency: /usr/sbin/update-alternatives
  dependency: libc.so.6()(64bit)
  dependency: libc.so.6(GLIBC_2.11)(64bit)
  dependency: libc.so.6(GLIBC_2.14)(64bit)
  dependency: libc.so.6(GLIBC_2.15)(64bit)
  dependency: libc.so.6(GLIBC_2.17)(64bit)
  dependency: libc.so.6(GLIBC_2.2.5)(64bit)
  dependency: libc.so.6(GLIBC_2.3)(64bit)
  dependency: libc.so.6(GLIBC_2.3.4)(64bit)
  dependency: libc.so.6(GLIBC_2.4)(64bit)
  dependency: libc.so.6(GLIBC_2.6)(64bit)
  dependency: libc.so.6(GLIBC_2.7)(64bit)
  dependency: libicu
  dependency: libm.so.6()(64bit)
  dependency: libm.so.6(GLIBC_2.2.5)(64bit)
  dependency: libpq.so.5()(64bit)
  dependency: libpthread.so.0()(64bit)
  dependency: libpthread.so.0(GLIBC_2.2.5)(64bit)
  dependency: libreadline.so.7()(64bit)
  dependency: libz.so.1()(64bit)
  dependency: postgresql10-libs(x86-64) = 10.22-1PGDG.rhel8
  dependency: rpmlib(CompressedFileNames) <= 3.0.4-1
  dependency: rpmlib(FileDigests) <= 4.6.0-1
  dependency: rpmlib(PayloadFilesHavePrefix) <= 4.0-1
  dependency: rpmlib(PayloadIsXz) <= 5.2-1
  dependency: rtld(GNU_HASH)
  dependency: systemd
  dependency: systemd
  dependency: systemd
  dependency: systemd
  dependency: systemd-sysv
[root@server1]#

Instalando software en Linux RedHat con «yum» o «dnf»

Los comandos «yum» o «dnf» son los que debemos utilizar siempre para instalar o actualizar paquetes RPM porque:

  • Resuelven automáticamente todas las dependencias que se requieren para instalar un paquete RPM.
  • Se descargan automáticamente todos los paquetes RPM necesarios para instalar el paquete RPM.
  • Instalan las dependencias y el paquete RPM deseado de manera automática y en orden.
Instalación del entorno gráfico en Linux CentOS 8

ACLARACIÓN: yum es el comando tradicional de RedHat para instalar software mientras que dnf, previsiblemente, acabará sustituyendo a yum en el futuro. Podemos instalar dnf a partir de RedHat 7.

Por lo tanto, el uso de yum o de dnf es muchísimo más cómodo para instalar software RPM en RedHat.

  • Instalar un paquete rpm con yum o dnf
yum/dnf install Nombre_del_paquete
  • Actualizar un paquete RPM con yum o dnf:
yum/dnf update Nombre_del_paquete

Con «yum update» podremos actualizar todo el sistema operativo.

  • Consultar si ya tenemos instalado un paquete rpm
yum/dnf list |grep -i Nombre
  • Eliminar un paquete rpm con yum o dnf
yum/dnf remove Nombre_del_paquete

Te puede interesar

COMPÁRTEME

Deja un comentario