Com desactivar les actualitzacions de paquets utilitzant YUM/DNF a RHEL Linux


Les distribucions Linux basades en Red Hat, que s'utilitzen per obtenir, instal·lar, actualitzar, eliminar i consultar paquets dels dipòsits de programari oficials i de tercers.

Mentre actualitzem el sistema, de vegades, no actualitzem determinats paquets, com ara Apache Server (HTTP), MySQL, PHP o qualsevol altra aplicació important, perquè l'actualització d'aquest programari pot trencar les aplicacions web en funcionament en un servidor i causar problemes importants. Es recomana aturar les actualitzacions d'aquest programari fins que l'aplicació rebi actualitzacions noves.

En aquest article, us mostrarem com podem excloure (desactivar) determinades actualitzacions de paquets mitjançant el gestor de paquets YUM i DNF en distribucions basades en RPM com RHEL, CentOS, Fedora, Rocky Linux i AlmaLinux. També podem excloure o desactivar determinades actualitzacions de paquets de qualsevol repositori de tercers.

La sintaxi d'exclusió seria la següent.

exclude=package package1 packages*

La directiva d'exclusió anterior es defineix al fitxer de configuració /etc/yum.conf o /etc/dnf/dnf.conf amb la llista de paquets que cal excloure de les actualitzacions o instal·lacions.

La sintaxi anterior exclourà paquet, paquet1 i la llista d'actualitzacions o instal·lacions de paquet. Cada paraula clau s'ha de separar amb un espai per a l'exclusió de paquets.

Com excloure paquets a YUM o DNF

Per excloure (desactivar) actualitzacions específiques de paquets, obriu el fitxer /etc/yum.conf o /etc/dnf/dnf.conf amb l'editor que trieu.

# vi /etc/yum.conf
OR
# vi /etc/dnf/dnf.conf

Afegiu la línia següent a la part inferior del fitxer amb la paraula clau d'exclusió tal com es mostra a continuació.

[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=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

# This is the default, if you make this bigger yum won't see if the metadata 
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
#  It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

## Exclude following Packages Updates ##
exclude=httpd php mysql

A l'exemple anterior, l'exclusió de línia desactivarà les actualitzacions dels paquets httpd php i mysql. Provem d'instal·lar o actualitzar un d'ells mitjançant l'ordre YUM tal com es mostra a continuació.

# yum update httpd
OR
# dnf update httpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos.01link.hk
 * extras: centos.01link.hk
 * updates: mirrors.hns.net.in
base                                                   | 3.7 kB     00:00
extras                                                 | 3.0 kB     00:00
updates                                                | 3.5 kB     00:00
updates/primary_db                                     | 2.7 MB     00:16
Setting up Update Process
No Packages marked for Update

Com excloure paquets d'EPEL Repo

Per excloure instal·lacions o actualitzacions de paquets del repositori EPEL, obriu el fitxer anomenat /etc/yum.repos.d/epel.repo.

# vi /etc/yum.repos.d/epel.repo

Afegiu la línia d'exclusió especificant els paquets que s'han d'excloure de les actualitzacions.

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

Ara proveu d'actualitzar els fitxers especificats anteriorment des del dipòsit EPEL mitjançant l'ordre yum/dnf tal com es mostra.

# dnf update perl php python
OR
# yum update perl php python
Last metadata expiration check: 0:00:37 ago on Wednesday 17 November 2021 03:41:28 AM EST.
Package perl available, but not installed.
No match for argument: perl
No match for argument: php
No match for argument: python
Error: No packages marked for upgrade.

També podeu utilitzar l'opció de línia d'ordres yum/dnf per excloure paquets sense afegir-los als fitxers del dipòsit.

# yum --exclude=httpd update
Or
# dnf --exclude=httpd update

Per excloure una llista de paquets, utilitzeu l'ordre de la següent manera.

# yum --exclude=mysql\* --exclude=httpd\* update
Or
# dnf --exclude=mysql\* --exclude=httpd\* update

D'aquesta manera, podeu excloure les actualitzacions dels paquets que vulgueu. Hi ha moltes altres maneres de fer-ho, per exemple, recentment hem compilat un article sobre 4 maneres útils de bloquejar/desactivar o bloquejar determinats paquets mitjançant l'ordre yum a Linux.