YUM es una herramienta que nos permite instalar, actualizar y remover paquetes junto con sus dependencias en distribuciones Linux basados en RPM (CentOS, Red Hat y Fedora).

Los principales usos del comando y su respectiva descripción.
/var/log/yum.log: Logs de YUM.
/etc/yum.conf: Archivo de configuración de YUM.
/etc/yum.repos.d: Directorios donde se alojan los repositorios utilizados en el servidor.
yum install paquete: Instalamos la última versión del paquete seleccionado, solicitando confirmación de acción.
yum -y install paquete: Instalamos la última versión del paquete seleccionado, el -y lo hace sin solicitar confirmación.
yum -y install paquete1 paquete2: Instalamos los paquetes que deseamos uno detras del otro.
yum -y update: Actualizamos todos los paquetes del sistema.
yum -y update –exclude=prueba: Actualiza todos los paquetes del sistema menos «Prueba»
yum -y update paquete: Actualiza el paquete que indicamos solamente.
yum -y update paquete1 paquete2: Actualiza solamente los paquetes que vallamos indicando.
yum -y upgrade: Actualiza todos los paquetes incluidos aquellos marcados como obsoletos.
yum check-update: Lista los paquetes disponibles para actualizar.
yum info paquete: Nos tira la información del paquete seleccionado.
yum list: Lista todos los paquetes del sistema.
yum list installed: Lista los paquetes  instalados en el Sistema.
yum list updates: Lista todos los paquetes disponibles para ser actualizados.
yum list available: Lista todos los paquetes listos para ser instalados.
yum list | grep paquete: Lista el paquete disponible o ya instalado en el Sistema.
yum remove paquete: Elimina el paquete del Sistema.
yum search paquete: Hace una búsqueda del paquete en el Sistema.
yum clean all:  Permite limpiar paquetes y archivos de encabezados.
yum repolist: Lista todos los repositorios de YUM.

Algunos ejemplos

Buscar un paquete en el repositorio

El siguiente comando busca en todo el repositorio un paquete específico:

# yum search httpd

Loaded plugins: amazon-id, rhui-lb, security
=============================================== N/S Matched: httpd ==========
httpd.x86_64 : Apache HTTP Server
httpd-devel.i686 : Development interfaces for the Apache HTTP server
httpd-devel.x86_64 : Development interfaces for the Apache HTTP server
httpd-manual.noarch : Documentation for the Apache HTTP server
httpd-tools.x86_64 : Tools for use with the Apache HTTP Server
mod_dav_svn.x86_64 : Apache httpd module for Subversion server
mod_dnssd.x86_64 : An Apache HTTPD module which adds Zeroconf support

Para obtener una salida más detallada, utilice el siguiente comando:

# yum provides httpd

Loaded plugins: amazon-id, rhui-lb, security
httpd-2.2.15-26.el6.x86_64 : Apache HTTP Server
Repo : rhui-REGION-rhel-server-releases
Matched from:

yum provides */httpd  Busca en paquetes yum para encontrar el paquete que contiene ‘httpd’.

También es posible encontrar más información sobre los paquetes usando el siguiente comando:

# yum info httpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 ...
Installed Packages
Name        : httpd
Arch        : x86_64
Version     : 2.2.15
Release     : 69.el6.centos
Size        : 3.0 M
Repo        : installed
From repo   : base
Summary     : Apache HTTP Server
URL         : http://httpd.apache.org/
License     : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible

Operar en grupos de paquetes

Puede enumerar todos los grupos de paquetes que están instalados y disponibles en su computadora. El siguiente comando le mostrará el grupo de paquetes instalados y disponibles.

# yum grouplist
...
Installed Groups:
   E-mail server
   Perl Support
   Scalable Filesystems
   Security Tools
...
Available Groups:
   Additional Development
   Backup Client
   Backup Server
   Base
   CIFS file server
.....

Si desea tener una idea breve sobre los paquetes incluidos en un grupo, puede usar el comando el parámetro groupinfo.

# yum groupinfo "PHP Support"
Loaded plugins: fastestmirror
Setting up Group Process
...
Group: PHP Support
 Description: PHP web application framework.
 Mandatory Packages:
   php
 Default Packages:
   php-gd
   php-pdo
   php-pear
   php-xml
 Optional Packages:
   php-ldap
   php-mysql
...

Puede instalar un grupo de paquetes individual con la opción de instalación grupal. Por ejemplo, instalaremos el grupo de paquetes Soporte de PHP. Este grupo de paquetes contiene los paquetes php necesarios.

# yum groupinstall "PHP Support"

Loaded plugins: amazon-id, downloadonly, rhui-lb, security
Setting up Group Process
Warning: Group Support does not exist.
Resolving Dependencies
--> Running transaction check
---> Package php.x86_64 0:5.3.3-23.el6_4 will be installed
--> Processing Dependency: php-common(x86-64) = 5.3.3-23.el6_4 for package: php-5.3.3-23.el6_4.x86_64
--> Processing Dependency: php-cli(x86-64) = 5.3.3-23.el6_4 for package: php-5.3.3-23.el6_4.x86_64
---> Package php-gd.x86_64 0:5.3.3-23.el6_4 will be installed
--> Processing Dependency: libXpm.so.4()(64bit) for package: php-gd-5.3.3-23.el6_4.x86_64

Dependencies Resolved

=====================================================================
Package Arch Version Repository Size
=====================================================================
Installing:
php x86_64 5.3.3-23.el6_4 rhui-REGION-rhel-server-releases 1.1 M
...

Puede actualizar los paquetes de un grupo con el siguiente comando:

]# yum groupupdate "PHP Support"
Loaded plugins: fastestmirror
Setting up Group Process
Loading mirror speeds from cached hostfile
...
Resolving Dependencies
--> Running transaction check
---> Package php.x86_64 0:5.3.3-49.el6 will be installed
--> Processing Dependency: php-common(x86-64) = 5.3.3-49.el6 for package: php-5.3.3-49.el6.x86_64
--> Processing Dependency: php-cli(x86-64) = 5.3.3-49.el6 for package: php-5.3.3-49.el6.x86_64
...

Para eliminar un paquete de grupo, use el siguiente comando:

# yum groupremove "PHP Support"
Loaded plugins: fastestmirror
Setting up Group Process
Loading mirror speeds from cached hostfile
...
Resolving Dependencies
--> Running transaction check
---> Package php.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-gd.x86_64 0:5.3.3-49.el6 will be erased
...

Instale el paquete usando YUM

Se puede instalar un paquete usando yum install comando de la siguiente manera:

#  yum install httpd

Loaded plugins: amazon-id, rhui-lb, security
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.2.15-29.el6_4 will be installed
--> Processing Dependency: httpd-tools = 2.2.15-29.el6_4 for package: httpd-2.2.15-29.el6_4.x86_64
--> Processing Dependency: apr-util-ldap for package: httpd-2.2.15-29.el6_4.x86_64

Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
httpd x86_64 2.2.15-29.el6_4 rhui-REGION-rhel-server-releases 821

Como puede ver, yum agregó paquetes adicionales con la instalación de ‘httpd’. Esto se llama la resolución de dependencias que realiza yum. Si desea que yum no solicite el [y/N] opción. Usar yum install -y httpd

Reiniciar todo un paquete

Algunas veces puede enfrentar algunos problemas con los paquetes que ya están en su sistema. Una posibilidad es desinstalar y volver a instalar, pero es demasiado tiempo. Puede pedirle a yum que haga la reinstalación por usted y se hará automáticamente

# yum reinstall httpd -y

Este proceso simplemente reinstalará los paquetes por usted

Actualizar paquetes

Cuando desee hacer una actualización, primero debe verificar todas las actualizaciones disponibles. Esto es posible con el check-update parámetro. Si hay algunas actualizaciones disponibles, recibirá un resultado; de lo contrario, nada.

# yum check-update

Puede actualizar directamente todos los paquetes en el servidor usando el comando ‘actualizar’. Esto también actualizará el paquete del kernel a la última versión, lo que significa que su sistema operativo se actualizará a la última proporcionada por RHEL.

# yum update

Puede actualizar un paquete específico de la siguiente manera:

# yum update httpd
Loaded plugins: amazon-id, rhui-lb, security
Setting up Update Process
No Packages marked for Update

Puede excluir un paquete durante el proceso de actualización con el -x parámetro

 # yum update -x httpd

Descargue el archivo RPM del paquete sin instalarlo

Use yum para descargar el paquete RPM desde el repositorio de RHN o CentOS sin instalarlo. Primero debe instalar un complemento para yum para que yum descargue solo el rpm. El nombre de la utilidad es yum-downloadonly y se puede instalar a través de yum de la siguiente manera:

# yum install yum-downloadonly
Loaded plugins: amazon-id, rhui-lb, security
Setting up Install Process
Resolving Dependencies
--> Running transaction check

Dependencies Resolved

===========================================================================
Package Arch Version Repository Size
===========================================================================
Installing:
yum-plugin-downloadonly noarch 1.1.30-14.el6 rhui-REGION-rhel-server-releases 20 k

Transaction Summary
===========================================================================
Install 1 Package(s)

Ahora puede descargar un paquete del repositorio sin instalarlo usando este comando:

# yum install httpd-devel --downloadonly

De forma predeterminada, los paquetes se descargan en /var/cache/yum/<arch> directorio pero puede descargarlos en una ubicación específica agregando otra opción al comando yum

# yum install httpd-devel --downloadonly --downloaddir=/opt

Realice una instalación local de archivos rpm

Si tiene un rpm de un paquete pero no tiene las dependencias y no sabe dónde conseguirlo. todavía puede tener yum para instalar ese rpm y obtener las dependencias necesarias del repositorio. Instalemos el httpd-devel-2.2.15-29.el6_4.x86_64 RPM que acabamos de descargar.

#  yum localinstall /opt/httpd-devel-2.2.15-29.el6_4.x86_64.rpm

Loaded plugins: amazon-id, downloadonly, rhui-lb, security
Setting up Local Package Process
Examining /opt/httpd-devel-2.2.15-29.el6_4.x86_64.rpm: httpd-devel-2.2.15-29.el6_4.x86_64
Marking /opt/httpd-devel-2.2.15-29.el6_4.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package httpd-devel.x86_64 0:2.2.15-29.el6_4 will be installed
--> Processing Dependency: apr-devel for package: httpd-devel-2.2.15-29.el6_4.x86_64
--> Processing Dependency: apr-util-devel for package: httpd-devel-2.2.15-29.el6_4.x86_64
--> Running transaction check
...
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
httpd-devel x86_64 2.2.15-29.el6_4 /httpd-devel-2.2.15-29.el6_4.x86_64 526 k
Installing for dependencies:
apr-devel x86_64 1.3.9-5.el6_2 rhui-REGION-rhel-server-releases 176 k
...
Transaction Summary
=======================================================================
Install 8 Package(s)
Upgrade 2 Package(s)

Total size: 10 M
Is this ok [y/N]: y

8) Eliminando paquetes usando yum

yum remove Quita un paquete.

# yum remove httpd
Failed to set locale, defaulting to C
Loaded plugins: amazon-id, downloadonly, rhui-lb, security
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.2.15-29.el6_4 will be erased
--> Processing Dependency: httpd-mmn = 20051115 for package: php-5.3.3-23.el6_4.x86_64
...
--> Finished Dependency Resolution
...
Removing:
httpd x86_64 2.2.15-29.el6_4 @rhui-REGION-rhel-server-releases 2.9 M
Removing for dependencies:
httpd-devel x86_64 2.2.15-29.el6_4 @/httpd-devel-2.2.15-29.el6_4.x86_64 526 k
php x86_64 5.3.3-23.el6_4 @rhui-REGION-rhel-server-releases 3.5 M

Lista de todos los paquetes instalados

Si desea enumerar todos los paquetes instalados, puede usar el comando yum list installed. Esto es útil en combinación con grep o para verificar si se ha instalado un paquete específico. Esto es similar a consultar paquetes instalados con rpm -qa mando.

# yum list installed
Loaded plugins: amazon-id, downloadonly, rhui-lb, security
Installed Packages
ConsoleKit.x86_64 0.4.1-3.el6 @koji-override-0/$releasever
ConsoleKit-libs.x86_64 0.4.1-3.el6 @koji-override-0/$releasever
MAKEDEV.x86_64 3.24-6.el6 @koji-override-0/$releasever
PyYAML.x86_64 3.10-3.1.el6 @koji-override-0/$releasever
Red_Hat_Enterprise_Linux-Release_Notes-6-en-US.noarch
4-2.el6 @koji-override-0/$releasever
....

Enumere el repositorio disponible

Enumere el repositorio disponible desde el que se consultan, instalan y actualizan los paquetes.

# yum repolist

Loaded plugins: amazon-id, downloadonly, rhui-lb, security
repo id repo name status
rhui-REGION-client-config-server-6 Red Hat Update Infrastructure 2.0 Client Configuration Server 6 4
rhui-REGION-rhel-server-releases Red Hat Enterprise Linux Server 6 (RPMs) 10994
rhui-REGION-rhel-server-releases-optional Red Hat Enterprise Linux Server 6 Optional (RPMs) 6250
repolist: 17248

Puede enumerar los repositorios habilitados y deshabilitados

# yum repolist all

También puede optar por instalar un paquete desde un repositorio específico

# yum --enablerepo=epel install phpmyadmin
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
epel/metalink                                                                        |  14 kB     ...
epel                                                                                 | 4.7 kB     00:00     
epel/primary_db                                                                      | 6.0 MB     00:00     
Resolving Dependencies
--> Running transaction check
---> Package phpMyAdmin.noarch 0:4.0.10.20-1.el6 will be installed
--> Processing Dependency: php-mbstring for package: phpMyAdmin-4.0.10.20-1.el6.noarch
--> Processing Dependency: php-mcrypt for package: phpMyAdmin-4.0.10.20-1.el6.noarch
--> Processing Dependency: php-mysqli for package: phpMyAdmin-4.0.10.20-1.el6.noarch
...

Historia de Yum

Es posible ver el historial de todas las acciones realizadas por el comando yum en su servidor.

# yum history
Loaded plugins: fastestmirror
ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
     7 | root <root>              | 2019-02-20 09:57 | Reinstall      |    1   
     6 | root <root>              | 2019-02-20 09:48 | Install        |    1   
     5 | root <root>              | 2019-02-20 09:14 | Install        |   22   
     4 | root <root>              | 2019-02-20 07:56 | I, U           |  103 EE
     3 | root <root>              | 2017-03-01 20:32 | Install        |   15   
     2 | root <root>              | 2017-03-01 20:30 | I, U           |   48   
     1 | System <unset>           | 2017-03-01 20:16 | Install        |  205   
history list

El resultado se filtra de la acción más reciente en la parte superior a la anterior al final de la lista. También es posible mostrar la información detallada de una acción. Por ejemplo

# yum history info 5
Loaded plugins: fastestmirror
Transaction ID : 5
Begin time     : Wed Feb 20 09:14:37 2019
Begin rpmdb    : 222:02bf9bb9fcdb46cf7494b5b4b01b7df711c6d44d
End time       :            09:14:39 2019 (2 seconds)
End rpmdb      : 244:874a3a793190f9951bca4b6de4c2326da6ec5de7
User           : root <root>
Return-Code    : Success
Command Line   : groupinstall PHP Support
....
Packages Altered:
    Dep-Install apr-1.3.9-5.el6_9.1.x86_64              @base
    Dep-Install apr-util-1.3.9-3.el6_0.1.x86_64         @base
    Dep-Install apr-util-ldap-1.3.9-3.el6_0.1.x86_64    @base
...

Y es posible deshacer una acción como revertirla. Por ejemplo, deshagamos la acción anterior 5 que fue la instalación del grupo de paquetes ‘Soporte PHP’.

# yum history undo 5
Loaded plugins: fastestmirror
Undoing transaction 5, from Wed Feb 20 09:14:37 2019
    Dep-Install apr-1.3.9-5.el6_9.1.x86_64              @base
    Dep-Install apr-util-1.3.9-3.el6_0.1.x86_64         @base
    Dep-Install apr-util-ldap-1.3.9-3.el6_0.1.x86_64    @base
    ...
    ...
 php-cli                    x86_64              5.3.3-49.el6                       @base              6.2 M
 php-common                 x86_64              5.3.3-49.el6                       @base              2.9 M
 php-gd                     x86_64              5.3.3-49.el6                       @base              324 k
 php-pdo                    x86_64              5.3.3-49.el6                       @base              168 k
 php-pear                   noarch              1:1.9.4-5.el6                      @base              2.2 M
 php-xml                    x86_64              5.3.3-49.el6                       @base              307 k

Transaction Summary
============================================================================================================
Remove       22 Package(s)

Installed size: 27 M
Is this ok [y/N]: 

Y es posible rehacer la acción 5 con el comando.

# yum history redo 5

o deshacer la acción que hicimos antes. Pero primero, debes verificar nuevamente el historial

# yum history
Loaded plugins: fastestmirror
ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
     8 | root <root>              | 2019-02-20 14:15 | Erase          |   22   
     7 | root <root>              | 2019-02-20 09:57 | Reinstall      |    1   
     6 | root <root>              | 2019-02-20 09:48 | Install        |    1   
     5 | root <root>              | 2019-02-20 09:14 | Install        |   22

Puedes ver que la acción de deshacer es la acción 8 Borrar, para que puedas deshacerlo con

# yum history undo 8

Pero si pensamos en eso, es fácil rehacer la acción 5 si desea revertir lo que ha hecho.

Lista de paquetes instalados y disponibles

Es posible enumerar todos los paquetes que están instalados en su computadora con el siguiente comando:

# yum list installed

Pero la lista puede ser muy larga, por lo que puede decidir ir página por página.

# yum list installed | more

o para enumerar solo unas pocas líneas

# yum list installed | head -n 20

Como solo puede decidir ordenar las líneas que contienen el nombre del patrón de un paquete que está buscando

# yum list installed | grep php
php.x86_64             5.3.3-49.el6     @base                                   
php-cli.x86_64         5.3.3-49.el6     @base                                   
php-common.x86_64      5.3.3-49.el6     @base                                   
php-gd.x86_64          5.3.3-49.el6     @base                                   
php-pdo.x86_64         5.3.3-49.el6     @base                                   
php-pear.noarch        1:1.9.4-5.el6    @base                                   
php-xml.x86_64         5.3.3-49.el6     @base

Además de los paquetes instalados, también existe la posibilidad de listar los paquetes que puede instalar, en orden, los paquetes disponibles para su sistema, pero este comando será muy largo.

# yum list available

Entonces puedes filtrar con grep tener las líneas de paquetes que pueden tener los paquetes que estás buscando

# yum list available | grep mysql

Instale la actualización de seguridad

Durante la actualización del sistema, es posible que solo elija las actualizaciones de seguridad en lugar de actualizar todos los paquetes si teme que se produzca una modificación en uno de sus paquetes.

Pero primero, deberá instalar el complemento de seguridad

# yum -y install yum-plugin-security
...
--> Running transaction check
---> Package yum-plugin-security.noarch 0:1.1.30-42.el6_10 will be installed

Entonces puedes mostrar toda la actualización de seguridad.

# yum updateinfo list security all

Entonces puedes instalar actualizaciones de seguridad

# yum update --security

O puede optar por actualizar todos los paquetes que tienen al menos información de seguridad a la última actualización de seguridad

# yum --security update-minimal