Cómo utilizar Yum, el gestor de paquetes de CentOS

Dificultad: Fácil
Tiempo de Lectura: 7 minutos

Yum (Yellowdog Updater, Modified) es el gestor de paquetes de software RPM (Red Hat Package) utilizado en RHEL, CentOS, Fedora y otros sistemas basados en GNU/Linux y RPM.

Podemos hacer uso de Yum desde la línea de comandos para gestionar software: actualizar, instalar, desinstalar, ETC. Yum se encargará de instalar las dependencias necesarias a la hora de instalar un paquete RPM de forma automática. Por ejemplo si necesitamos instalar el paquete httpd será necesario instalar una serie de paquetes adicionales para su correcto funcionamiento, veamos:

yum deplist httpd | grep dependency
  dependency: libexpat.so.0()(64bit)
  dependency: libldap-2.3.so.0()(64bit)
  dependency: initscripts >= 8.36
  dependency: /bin/mv
  dependency: libdl.so.2()(64bit)
  dependency: /usr/sbin/useradd
  dependency: libcrypto.so.6()(64bit)
  dependency: /bin/sh
  dependency: gawk
  dependency: /bin/rm
  dependency: libpcre.so.0()(64bit)
  dependency: /bin/bash
  dependency: libselinux.so.1()(64bit)
  dependency: libssl.so.6()(64bit)
  dependency: /sbin/chkconfig
  dependency: /etc/mime.types
  dependency: libc.so.6(GLIBC_2.3.4)(64bit)
  dependency: /bin/mktemp
  dependency: libdb-4.3.so()(64bit)
  dependency: sh-utils
  dependency: libcrypt.so.1(GLIBC_2.2.5)(64bit)
  dependency: libc.so.6(GLIBC_2.4)(64bit)
  dependency: libc.so.6()(64bit)
  dependency: liblber-2.3.so.0()(64bit)
  dependency: libz.so.1()(64bit)
  dependency: rtld(GNU_HASH)
  dependency: /usr/bin/find
  dependency: libcrypt.so.1()(64bit)
  dependency: libpthread.so.0()(64bit)
  dependency: libc.so.6(GLIBC_2.2.5)(64bit)
  dependency: libm.so.6(GLIBC_2.2.5)(64bit)
  dependency: libpthread.so.0(GLIBC_2.2.5)(64bit)
  dependency: libc.so.6(GLIBC_2.3)(64bit)
  dependency: libm.so.6()(64bit)
  dependency: libaprutil-1.so.0()(64bit)
  dependency: textutils
  dependency: config(httpd) = 2.2.3-83.el5.centos
  dependency: /usr/share/magic.mime
  dependency: libapr-1.so.0()(64bit)
  dependency: libexpat.so.0()(64bit)
  dependency: libldap-2.3.so.0()(64bit)
  dependency: initscripts >= 8.36
  dependency: /bin/mv
  dependency: libdl.so.2()(64bit)
  dependency: /usr/sbin/useradd
  dependency: libcrypto.so.6()(64bit)
  dependency: /bin/sh
  dependency: gawk
  dependency: /bin/rm
  dependency: libpcre.so.0()(64bit)
  dependency: /bin/bash
  dependency: libselinux.so.1()(64bit)
  dependency: config(httpd) = 2.2.3-82.el5.centos
  dependency: /sbin/chkconfig
  dependency: /etc/mime.types
  dependency: libc.so.6(GLIBC_2.3.4)(64bit)
  dependency: /bin/mktemp
  dependency: libdb-4.3.so()(64bit)
  dependency: sh-utils
  dependency: libcrypt.so.1(GLIBC_2.2.5)(64bit)
  dependency: libc.so.6(GLIBC_2.4)(64bit)
  dependency: libc.so.6()(64bit)
  dependency: liblber-2.3.so.0()(64bit)
  dependency: libz.so.1()(64bit)
  dependency: rtld(GNU_HASH)
  dependency: /usr/bin/find
  dependency: libssl.so.6()(64bit)
  dependency: libcrypt.so.1()(64bit)
  dependency: libpthread.so.0()(64bit)
  dependency: libc.so.6(GLIBC_2.2.5)(64bit)
  dependency: libm.so.6(GLIBC_2.2.5)(64bit)
  dependency: libpthread.so.0(GLIBC_2.2.5)(64bit)
  dependency: libc.so.6(GLIBC_2.3)(64bit)
  dependency: libm.so.6()(64bit)
  dependency: libaprutil-1.so.0()(64bit)
  dependency: textutils
  dependency: /usr/share/magic.mime
  dependency: libapr-1.so.0()(64bit)
  dependency: libexpat.so.0()(64bit)
  dependency: libldap-2.3.so.0()(64bit)
  dependency: initscripts >= 8.36
  dependency: /bin/mv
  dependency: libdl.so.2()(64bit)
  dependency: /usr/sbin/useradd
  dependency: libcrypto.so.6()(64bit)
  dependency: /bin/sh
  dependency: gawk
  dependency: /bin/rm
  dependency: config(httpd) = 2.2.3-87.el5.centos
  dependency: /bin/bash
  dependency: libselinux.so.1()(64bit)
  dependency: libssl.so.6()(64bit)
  dependency: /sbin/chkconfig
  dependency: /etc/mime.types
  dependency: libc.so.6(GLIBC_2.3.4)(64bit)
  dependency: /bin/mktemp
  dependency: libdb-4.3.so()(64bit)
  dependency: sh-utils
  dependency: libcrypt.so.1(GLIBC_2.2.5)(64bit)
  dependency: libc.so.6(GLIBC_2.4)(64bit)
  dependency: libc.so.6()(64bit)
  dependency: liblber-2.3.so.0()(64bit)
  dependency: libz.so.1()(64bit)
  dependency: rtld(GNU_HASH)
  dependency: libpcre.so.0()(64bit)
  dependency: /usr/bin/find
  dependency: libcrypt.so.1()(64bit)
  dependency: libpthread.so.0()(64bit)
  dependency: libc.so.6(GLIBC_2.2.5)(64bit)
  dependency: libm.so.6(GLIBC_2.2.5)(64bit)
  dependency: libpthread.so.0(GLIBC_2.2.5)(64bit)
  dependency: libc.so.6(GLIBC_2.3)(64bit)
  dependency: libm.so.6()(64bit)
  dependency: libaprutil-1.so.0()(64bit)
  dependency: textutils
  dependency: /usr/share/magic.mime
  dependency: libapr-1.so.0()(64bit)
  dependency: libexpat.so.0()(64bit)
  dependency: libldap-2.3.so.0()(64bit)
  dependency: initscripts >= 8.36
  dependency: /bin/mv
  dependency: libdl.so.2()(64bit)
  dependency: /usr/sbin/useradd
  dependency: libcrypto.so.6()(64bit)
  dependency: /bin/sh
  dependency: gawk
  dependency: /bin/rm
  dependency: libpcre.so.0()(64bit)
  dependency: /bin/bash
  dependency: libselinux.so.1()(64bit)
  dependency: libssl.so.6()(64bit)
  dependency: /sbin/chkconfig
  dependency: libc.so.6()(64bit)
  dependency: /etc/mime.types
  dependency: libc.so.6(GLIBC_2.3.4)(64bit)
  dependency: /bin/mktemp
  dependency: libdb-4.3.so()(64bit)
  dependency: sh-utils
  dependency: libcrypt.so.1(GLIBC_2.2.5)(64bit)
  dependency: libc.so.6(GLIBC_2.4)(64bit)
  dependency: config(httpd) = 2.2.3-85.el5.centos
  dependency: liblber-2.3.so.0()(64bit)
  dependency: libz.so.1()(64bit)
  dependency: rtld(GNU_HASH)
  dependency: /usr/bin/find
  dependency: libcrypt.so.1()(64bit)
  dependency: libpthread.so.0()(64bit)
  dependency: libc.so.6(GLIBC_2.2.5)(64bit)
  dependency: libm.so.6(GLIBC_2.2.5)(64bit)
  dependency: libpthread.so.0(GLIBC_2.2.5)(64bit)
  dependency: libc.so.6(GLIBC_2.3)(64bit)
  dependency: libm.so.6()(64bit)
  dependency: libaprutil-1.so.0()(64bit)
  dependency: textutils
  dependency: /usr/share/magic.mime
  dependency: libapr-1.so.0()(64bit)

Imaginen tener que instalar todos esos paquetes manualmente! Pero yum se encargará de hacerlo por nosotros 🙂

Yum se basa en el uso de repositorios de software para obtener los RPM que estén disponibles más allá de los que traen los sistemas operativos por defecto.

Vamos a comenzar viendo el tema de los repositorios.

Podemos listar los repositorios que tenemos disponibles filtrando entre habilitados, deshabilitados, o listar todos los repositorios:

yum repolist enabled
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.advancedhosters.com
 * epel: mirror.steadfast.net
 * extras: mirrors.loosefoot.com
 * remi: mirrors.mediatemple.net
 * updates: mirror.anl.gov
repo id                                         repo name                                                                                 status
base                                            CentOS-5 - Base                                                                           3,662
epel                                            Extra Packages for Enterprise Linux 5 - x86_64                                            7,699
extras                                          CentOS-5 - Extras                                                                           266
nginx                                           nginx repo                                                                                   65
remi                                            Les RPM de remi pour Enterprise Linux 5 - x86_64                                          1,687
updates                                         CentOS-5 - Updates                                                                          633
repolist: 14,012
yum repolist disabled
Loaded plugins: fastestmirror
repo id                                         repo name                                                                                       
C5.0-base                                       CentOS-5.0 - Base                                                                               
C5.0-centosplus                                 CentOS-5.0 - Plus                                                                               
C5.0-extras                                     CentOS-5.0 - Extras                                                                             
C5.0-updates                                    CentOS-5.0 - Updates                                                                            
C5.1-base                                       CentOS-5.1 - Base                                                                               
C5.1-centosplus                                 CentOS-5.1 - Plus                                                                               
C5.1-extras                                     CentOS-5.1 - Extras                                                                             
C5.1-updates                                    CentOS-5.1 - Updates                                                                            
C5.2-base                                       CentOS-5.2 - Base                                                                               
C5.2-centosplus                                 CentOS-5.2 - Plus                                                                               
C5.2-extras                                     CentOS-5.2 - Extras                                                                             
C5.2-updates                                    CentOS-5.2 - Updates                                                                            
C5.3-base                                       CentOS-5.3 - Base                                                                               
C5.3-centosplus                                 CentOS-5.3 - Plus                                                                               
C5.3-extras                                     CentOS-5.3 - Extras                                                                             
C5.3-updates                                    CentOS-5.3 - Updates                                                                            
C5.4-base                                       CentOS-5.4 - Base                                                                               
C5.4-centosplus                                 CentOS-5.4 - Plus                                                                               
C5.4-extras                                     CentOS-5.4 - Extras                                                                             
C5.4-updates                                    CentOS-5.4 - Updates                                                                            
C5.5-base                                       CentOS-5.5 - Base                                                                               
C5.5-centosplus                                 CentOS-5.5 - Plus                                                                               
C5.5-extras                                     CentOS-5.5 - Extras                                                                             
C5.5-updates                                    CentOS-5.5 - Updates                                                                            
C5.6-base                                       CentOS-5.6 - Base                                                                               
C5.6-centosplus                                 CentOS-5.6 - Plus                                                                               
C5.6-extras                                     CentOS-5.6 - Extras                                                                             
C5.6-updates                                    CentOS-5.6 - Updates                                                                            
C5.7-base                                       CentOS-5.7 - Base                                                                               
C5.7-centosplus                                 CentOS-5.7 - Plus                                                                               
C5.7-extras                                     CentOS-5.7 - Extras                                                                             
C5.7-updates                                    CentOS-5.7 - Updates                                                                            
C5.8-base                                       CentOS-5.8 - Base                                                                               
C5.8-centosplus                                 CentOS-5.8 - Plus                                                                               
C5.8-extras                                     CentOS-5.8 - Extras                                                                             
C5.8-updates                                    CentOS-5.8 - Updates                                                                            
C5.9-base                                       CentOS-5.9 - Base                                                                               
C5.9-centosplus                                 CentOS-5.9 - Plus                                                                               
C5.9-extras                                     CentOS-5.9 - Extras                                                                             
C5.9-updates                                    CentOS-5.9 - Updates                                                                            
c5-media                                        CentOS-5 - Media                                                                                
centosplus                                      CentOS-5 - Plus                                                                                 
contrib                                         CentOS-5 - Contrib                                                                              
debug                                           CentOS-5 - Debuginfo                                                                            
epel-debuginfo                                  Extra Packages for Enterprise Linux 5 - x86_64 - Debug                                          
epel-source                                     Extra Packages for Enterprise Linux 5 - x86_64 - Source                                         
epel-testing                                    Extra Packages for Enterprise Linux 5 - Testing - x86_64                                        
epel-testing-debuginfo                          Extra Packages for Enterprise Linux 5 - Testing - x86_64 - Debug                                
epel-testing-source                             Extra Packages for Enterprise Linux 5 - Testing - x86_64 - Source                               
remi-debuginfo                                  Les RPM de remi pour Enterprise Linux 5 - x86_64 - debuginfo                                    
remi-php55                                      Les RPM de remi de PHP 5.5 pour Enterprise Linux 5 - x86_64                                     
remi-php55-debuginfo                            Les RPM de remi de PHP 5.5 pour Enterprise Linux 5 - x86_64 - debuginfo                         
remi-php56                                      Les RPM de remi de PHP 5.6 pour Enterprise Linux 5 - x86_64                                     
remi-php56-debuginfo                            Les RPM de remi de PHP 5.6 pour Enterprise Linux 5 - x86_64 - debuginfo                         
remi-test                                       Les RPM de remi en test pour Enterprise Linux 5 - x86_64                                        
remi-test-debuginfo                             Les RPM de remi en test pour Enterprise Linux 5 - x86_64 - debuginfo                            
repolist: 0
yum repolist all
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.advancedhosters.com
 * epel: mirror.steadfast.net
 * extras: centos.mbni.med.umich.edu
 * remi: mirrors.mediatemple.net
 * updates: mirror.anl.gov
repo id                                 repo name                                                                                 status
C5.0-base                               CentOS-5.0 - Base                                                                         disabled
C5.0-centosplus                         CentOS-5.0 - Plus                                                                         disabled
C5.0-extras                             CentOS-5.0 - Extras                                                                       disabled
C5.0-updates                            CentOS-5.0 - Updates                                                                      disabled
C5.1-base                               CentOS-5.1 - Base                                                                         disabled
C5.1-centosplus                         CentOS-5.1 - Plus                                                                         disabled
C5.1-extras                             CentOS-5.1 - Extras                                                                       disabled
C5.1-updates                            CentOS-5.1 - Updates                                                                      disabled
C5.2-base                               CentOS-5.2 - Base                                                                         disabled
C5.2-centosplus                         CentOS-5.2 - Plus                                                                         disabled
C5.2-extras                             CentOS-5.2 - Extras                                                                       disabled
C5.2-updates                            CentOS-5.2 - Updates                                                                      disabled
C5.3-base                               CentOS-5.3 - Base                                                                         disabled
C5.3-centosplus                         CentOS-5.3 - Plus                                                                         disabled
C5.3-extras                             CentOS-5.3 - Extras                                                                       disabled
C5.3-updates                            CentOS-5.3 - Updates                                                                      disabled
C5.4-base                               CentOS-5.4 - Base                                                                         disabled
C5.4-centosplus                         CentOS-5.4 - Plus                                                                         disabled
C5.4-extras                             CentOS-5.4 - Extras                                                                       disabled
C5.4-updates                            CentOS-5.4 - Updates                                                                      disabled
C5.5-base                               CentOS-5.5 - Base                                                                         disabled
C5.5-centosplus                         CentOS-5.5 - Plus                                                                         disabled
C5.5-extras                             CentOS-5.5 - Extras                                                                       disabled
C5.5-updates                            CentOS-5.5 - Updates                                                                      disabled
C5.6-base                               CentOS-5.6 - Base                                                                         disabled
C5.6-centosplus                         CentOS-5.6 - Plus                                                                         disabled
C5.6-extras                             CentOS-5.6 - Extras                                                                       disabled
C5.6-updates                            CentOS-5.6 - Updates                                                                      disabled
C5.7-base                               CentOS-5.7 - Base                                                                         disabled
C5.7-centosplus                         CentOS-5.7 - Plus                                                                         disabled
C5.7-extras                             CentOS-5.7 - Extras                                                                       disabled
C5.7-updates                            CentOS-5.7 - Updates                                                                      disabled
C5.8-base                               CentOS-5.8 - Base                                                                         disabled
C5.8-centosplus                         CentOS-5.8 - Plus                                                                         disabled
C5.8-extras                             CentOS-5.8 - Extras                                                                       disabled
C5.8-updates                            CentOS-5.8 - Updates                                                                      disabled
C5.9-base                               CentOS-5.9 - Base                                                                         disabled
C5.9-centosplus                         CentOS-5.9 - Plus                                                                         disabled
C5.9-extras                             CentOS-5.9 - Extras                                                                       disabled
C5.9-updates                            CentOS-5.9 - Updates                                                                      disabled
base                                    CentOS-5 - Base                                                                           enabled: 3,662
c5-media                                CentOS-5 - Media                                                                          disabled
centosplus                              CentOS-5 - Plus                                                                           disabled
contrib                                 CentOS-5 - Contrib                                                                        disabled
debug                                   CentOS-5 - Debuginfo                                                                      disabled
epel                                    Extra Packages for Enterprise Linux 5 - x86_64                                            enabled: 7,699
epel-debuginfo                          Extra Packages for Enterprise Linux 5 - x86_64 - Debug                                    disabled
epel-source                             Extra Packages for Enterprise Linux 5 - x86_64 - Source                                   disabled
epel-testing                            Extra Packages for Enterprise Linux 5 - Testing - x86_64                                  disabled
epel-testing-debuginfo                  Extra Packages for Enterprise Linux 5 - Testing - x86_64 - Debug                          disabled
epel-testing-source                     Extra Packages for Enterprise Linux 5 - Testing - x86_64 - Source                         disabled
extras                                  CentOS-5 - Extras                                                                         enabled:   266
nginx                                   nginx repo                                                                                enabled:    65
remi                                    Les RPM de remi pour Enterprise Linux 5 - x86_64                                          enabled: 1,687
remi-debuginfo                          Les RPM de remi pour Enterprise Linux 5 - x86_64 - debuginfo                              disabled
remi-php55                              Les RPM de remi de PHP 5.5 pour Enterprise Linux 5 - x86_64                               disabled
remi-php55-debuginfo                    Les RPM de remi de PHP 5.5 pour Enterprise Linux 5 - x86_64 - debuginfo                   disabled
remi-php56                              Les RPM de remi de PHP 5.6 pour Enterprise Linux 5 - x86_64                               disabled
remi-php56-debuginfo                    Les RPM de remi de PHP 5.6 pour Enterprise Linux 5 - x86_64 - debuginfo                   disabled
remi-test                               Les RPM de remi en test pour Enterprise Linux 5 - x86_64                                  disabled
remi-test-debuginfo                     Les RPM de remi en test pour Enterprise Linux 5 - x86_64 - debuginfo                      disabled
updates                                 CentOS-5 - Updates                                                                        enabled:   633
repolist: 14,012

Podemos instalar paquetes desde repositorios que estén deshabilitados, para ello los habilitamos momentáneamente:

yum install --enablerepo=rawhide bro

En el ejemplo habilitamos el repositorio rawhide e instalamos el rpm bro

Veamos ahora un ejemplo de como añadir un repositorio nuevo:

Creamos el archivo de configuración del repositorio con un editor de texto:

nano /etc/yum.repos.d/nginx.repo

Añadimos la configuración del repositorio:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1

En el ejemplo no tenemos habilitado el chequeo de la key de autenticación gpg, en caso de hacerlo (gpgcheck=1) deberemos instalarla.

Pasemos ahora a la gestión de paquetes RPM…

La sintaxis será la siguiente: yum [opciones] [comando] [paquete …]

Por ejemplo yum -y install httpd

De esa forma se instalará sin pedir confirmación el paquete http y sus correspondientes dependencias.

Principales comandos yum:

check-update   Verifica la existencia de actualizaciones de paquetes
clean          Elimina los datos del caché
deplist        Muestra las dependencias que necesita un paquete
downgrade      desactualizar un paquete a una versión anterior
erase          Elimina uno o varios paquetes de su sistema
groupinfo      Muestra detalles acerca de un grupo de paquetes
groupinstall   Instala los paquetes en un grupo de su sistema
grouplist      Muestra los grupos de paquetes disponibles
groupremove    Elimina los paquetes de un grupo de su sistema
help           Muestra un mensaje de ayuda del uso
history        Mostrar, o utilizar, el historial de la transacción
info           Muestra detalles acerca de un paquete o de un grupo de paquetes
install        Instala uno o varios paquetes en su sistema
list           Muestra un paquete o grupos de paquete
localinstall   Instala un RPM local
makecache      Genera el caché de metadatos
provides       Localiza el paquete que ofrezca el valor indicado
reinstall      reinstalar un paquete
repolist       Muestra los repositorios de software configurados
resolvedep     Determina qué paquetes ofrecen la dependencia indicada
search         Busca detalles en los paquetes para la cadena indicada
shell          Ejecuta una shell de Yum interactiva 
update         Actualiza uno o varios paquetes en su sistema
upgrade        Actualiza los paquetes tomando en cuenta los obsoletos
version        Muestra una versión para la máquina y/o los repositorios disponibles.

Principales Opciones:

  -h, --help            muestra este mensaje de ayuda y cierra
  -t, --tolerant        sea tolerante con los errores
  -C                    se ejecuta completamente a partir del caché, pero no
                        lo actualiza
  -c  [config file]     configurar ubicación de archivo
  -R  [minutes]         tiempo máximo de espera del comando
  -d  [debug level]     nivel de depuración de la salida
  --showduplicates      muestra duplicados en los repositorios, y en los
                        comandos para mostrar/buscar
  -e  [error level]     nivel de error de la salida
  -q, --quiet           operación discreta
  -v, --verbose         operación detallada
  -y                    responde "si" a todas las preguntas
  --version             muestra la versión de Yum y finaliza
  --installroot=[path]  define la raíz de instalación
  --enablerepo=[repo]   activa uno o más repositorios (los comodines son
                        permitidos)
  --disablerepo=[repo]  desactiva uno o más repositorios (los comodines son
                        permitidos)
  -x [package], --exclude=[package]
                        excluya paquete(s) de acuerdo a su nombre o glob
  --disableexcludes=[repo]
                        deshabilita la posibilidad de exclusión desde main,
                        para un repositorio o para todos
  --obsoletes           habilita el proceso de paquetes obsoletos durante las
                        actualizaciones
  --noplugins           deshabilita los complementos de Yum
  --nogpgcheck          deshabilita la verificación de firmas GPG
  --disableplugin=[plugin]
                        deshabilita complementos de acuerdo a su nombre
  --enableplugin=[plugin]
                        habilita complementos de acuerdo a su nombre
  --skip-broken         ignora paquetes con problemas de resolución de
                        dependencias
  --color=COLOR         controla la utilización de colores

Exclusiones de paquetes:

Podemos seleccionar una serie de paquetes para que no puedan ser actualizados mediante yum update:

yum --exclude=nginx\* --exclude=lighttpd\* update

En el ejemplo excluimos del update los paquetes nginx y lighttpd

También podemos dejar excluidos permanentemente estos paquetes añadiéndolos en el archivo de configuración /etc/yum.conf:

exclude=nginx* lighttpd*

Una vez hecho esto ya podemos ejecutar yum update sin más, ya que los paquetes excluidos no serán actualizados.

Yum es un excelente gestor de paquetes y tiene aún más para ofrecer que lo expuesto en este artículo.

Para saber más pueden recurrir al man desde la consola mediante

man yum

¿Te resultó útil el artículo? Compártelo con tus colegas: