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.
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
- Cómo reparar la base de datos de paquetes RPM
- Cómo descargar paquetes RPM con yum pero sin instalarlos
- Cómo crear un repositorio local de paquetes RPM
- Cómo configurar el repositorio EPEL
- Instalar RHEL9
Mi pasión por la tecnología me lleva constantemente a explorar las últimas tendencias y aplicaciones, buscando siempre formas de implementar soluciones innovadoras que mejoren la eficiencia. En puerto53.com comparto contenido valioso para ayudar a otros profesionales y entusiastas de la informática a navegar y dominar el complejo mundo de la tecnología. Mi especialidad en Linux RedHat.
Más sobre mí en el este enlace,