4 formas de deshabilitar/bloquear ciertas actualizaciones de paquetes usando el comando Yum


Package Manager es un software que permite a un usuario instalar un nuevo software, actualizar el sistema o actualizar cualquier software específico y ese tipo de cosas. En el caso de los sistemas basados en Linux en los que un software tiene muchas dependencias que deben estar presentes en el sistema para una instalación completa de ese software, el administrador de paquetes de este tipo de software se convierte en una herramienta muy necesaria en todos los sistemas.

Cada distribución de Linux se envía con su administrador de paquetes predeterminado para las funcionalidades mencionadas anteriormente, pero de todas estas, las más encontradas son: yum en los sistemas RHEL y Fedora (donde actualmente se está reemplazando con DNF desde Fedora 22+ en adelante) y apt desde Debian.

Si está buscando una herramienta APT para bloquear o deshabilitar ciertas actualizaciones de paquetes específicos, debe leer este artículo.

Dnf o Danified yum está reemplazando a yum en los sistemas Fedora, que es otro de nuestra lista. Si se exploran correctamente, estos administradores de paquetes se pueden utilizar para las siguientes funcionalidades:

  1. Instalar nuevo software desde el repositorio.
  2. Resuelva las dependencias del software instalando esas dependencias antes de instalar el software.
  3. Mantener la base de datos de las dependencias de cada software.
  4. Reducir la versión de cualquier software existente.
  5. Actualización de la versión del kernel.
  6. Listado de paquetes disponibles para instalación.

Ya hemos cubierto artículos detallados por separado sobre cada administrador de paquetes individual con ejemplos prácticos, debe leerlos para controlar y administrar la administración de paquetes en sus respectivas distribuciones de Linux.

Leer también:

  1. Dominar el comando Yum con estos 20 ejemplos prácticos
  2. 27 comandos DNF para administrar paquetes en las versiones de Fedora 22+
  3. Aprenda 25 comandos APT para administrar paquetes de Ubuntu

En el artículo, veremos cómo bloquear/deshabilitar ciertas actualizaciones de paquetes usando el administrador de paquetes Yum en los sistemas RHEL/CentOS y Fedora (aplicable hasta Fedora 21, la versión más reciente de Fedora viene con dnf como administrador de paquetes predeterminado).

Deshabilitar/bloquear actualizaciones de paquetes usando Yum

Yellow dog Updater, Modified (yum) es una herramienta de administración de paquetes en distribuciones basadas en RedHat como CentOS y Fedora. Varias estrategias utilizadas para bloquear/deshabilitar actualizaciones de paquetes usando Yum se analizan a continuación:

1. Abra y edite el archivo yum.conf , que se encuentra en /etc/yum.conf o en /etc/yum/yum.conf.

Se parece a la siguiente:

[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
...

Aquí, para excluir cierto paquete de la instalación o actualización, solo necesita agregar la variable de exclusión junto con el nombre del paquete que desea excluir. Por ejemplo, si quiero excluir todos los paquetes python-3 para que no se actualicen, simplemente agregaré la siguiente línea a yum.conf :

exclude=python-3*

Para excluir más de un paquete, simplemente separe sus nombres por espacio.

exclude=httpd php 
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
exclude=python-3*        [Exclude Single Package]
exclude=httpd php        [Exclude Multiple Packages]
...

Nota: para incluir estos paquetes, ignorando las entradas en yum.conf , use “-disableexcludes” y configúrelo en all | main | repoid, donde 'main' son los ingresados en yum.conf y 'repoid 'son aquellos cuya exclusión se especifica en el directorio repos.d, como se explica más adelante.

Ahora intentemos instalar o actualizar los paquetes especificados y veremos que el comando yum inhabilita su instalación o actualización.

# yum install httpd php

Loaded plugins: fastestmirror, langpacks, versionlock
Loading mirror speeds from cached hostfile
 * base: mirror.nbrc.ac.in
 * epel: mirror.wanxp.id
 * extras: mirror.nbrc.ac.in
 * updates: mirror.nbrc.ac.in
Nothing to do
# yum update httpd php

Loaded plugins: fastestmirror, langpacks, versionlock
Loading mirror speeds from cached hostfile
 * base: mirror.nbrc.ac.in
 * epel: mirror.wanxp.id
 * extras: mirror.nbrc.ac.in
 * updates: mirror.nbrc.ac.in
No packages marked for update

2. Lo anterior fue una solución permanente para excluir un paquete, ya que, a menos que se edite el archivo, ese paquete no se actualizará. Aquí también hay una solución temporal para esto. Justo en el momento en que vaya a realizar una actualización, use el interruptor -x en el comando yum para excluir el paquete que no desea actualizar, como:

# yum -x python-3 update

El comando anterior actualizará todos los paquetes cuyas actualizaciones están disponibles, excluyendo python-3 en su sistema.

Aquí, para excluir varios paquetes, use -x varias veces, o separe los nombres de los paquetes con , en un solo conmutador.

# yum -x httpd -x php update
OR
# yum -x httpd,php update

3. El uso del interruptor --exclude funciona igual que -x, solo necesita reemplazar -x con –exclude y pasar , una lista separada de nombres de paquetes.

# yum --exclude httpd,php

4. Para cualquier paquete instalado desde cualquier fuente externa mediante la adición de un repositorio, existe otra forma de detener su actualización en el futuro. Esto se puede hacer editando su archivo .repo que se crea en el directorio /etc/yum/repos.d/ o /etc/yum.repos.d.

Agregue la opción de exclusión con el nombre del paquete en el repositorio. Me gusta: para excluir cualquier paquete, digamos vino del repositorio de epel, agregue la siguiente línea en el archivo epel.repo :

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
exclude=wine

Ahora intente actualizar el paquete de vino, obtendrá un error como se muestra a continuación:

# yum update wine

Loaded plugins: fastestmirror, langpacks, versionlock
epel/x86_64/metalink                                    | 5.6 kB     00:00     
Loading mirror speeds from cached hostfile
 * base: mirror.nbrc.ac.in
 * epel: mirror.wanxp.id
 * extras: mirror.nbrc.ac.in
 * updates: mirror.nbrc.ac.in
No Match for argument: wine
No package wine available.
No packages marked for update

5. Otra forma en yum de enmascarar la versión de cualquier paquete, por lo que no está disponible para la gradación, es usar la opción versionlock de yum, pero para hacer esto, debe usar el paquete yum-plugin-versionlock instalado en el sistema.

# yum -y install yum-versionlock

Por ejemplo, para bloquear la versión del paquete, diga httpd solo a 2.4.6, simplemente escriba el siguiente comando como root.

# yum versionlock add httpd
Loaded plugins: fastestmirror, langpacks, versionlock
Adding versionlock on: 0:httpd-2.4.6-40.el7.centos
versionlock added: 1

Para ver los paquetes bloqueados, use el siguiente comando para listar los paquetes cuya versión ha sido bloqueada.

# yum versionlock list httpd
Loaded plugins: fastestmirror, langpacks, versionlock
0:httpd-2.4.6-40.el7.centos.*
versionlock list done

Conclusión

Estos son algunos consejos que le ayudarán a Deshabilitar/Bloquear actualizaciones de paquetes usando el administrador de paquetes yum. Si tienes otros trucos para hacer las mismas cosas, puedes comentarlos con nosotros.