Recherche de site Web

Comment désactiver les mises à jour des packages à l'aide de YUM/DNF dans RHEL Linux


Le DNF (Dandified Yum) est la version de nouvelle génération de YUM (Yellowdog Updater, Modified), est un gestionnaire de packages open source par défaut pour les distributions Linux basées sur Red Hat, utilisé pour obtenir, installer, mettre à niveau, supprimer, et interroger des packages à partir des référentiels de logiciels officiels et des référentiels tiers.

Lors de la mise à jour du système, il arrive parfois que nous ne mettions pas à jour certains packages tels que Apache Server (HTTP), MySQL, PHP, ou toute autre application majeure, car la mise à jour d'un tel logiciel peut interrompre les applications Web en cours d'exécution sur un serveur et provoquer des problèmes majeurs. Il est recommandé d'arrêter les mises à jour de ces logiciels jusqu'à ce que l'application soit corrigée avec de nouvelles mises à jour.

Dans cet article, nous allons vous montrer comment exclure (désactiver) certaines mises à jour de packages à l'aide des gestionnaires de packages YUM et DNF sur les distributions basées sur RPM telles que RHEL. , CentOS, Fedora, Rocky Linux et AlmaLinux. Nous pouvons également exclure ou désactiver certaines mises à jour de packages de tout référentiel tiers.

La syntaxe d'exclusion serait la suivante.

exclude=package package1 packages*

La directive exclude ci-dessus est définie dans le fichier de configuration /etc/yum.conf ou /etc/dnf/dnf.conf avec la liste des packages. à exclure des mises à jour ou des installations.

La syntaxe ci-dessus exclura « package », « package1 » et la liste des mises à jour ou des installations de « package ». Chaque mot-clé doit être séparé par un espace pour l'exclusion des packages.

Comment exclure des packages dans YUM ou DNF

Pour exclure (désactiver) des mises à jour de packages spécifiques, ouvrez le fichier appelé /etc/yum.conf ou /etc/dnf/dnf.conf avec l'éditeur de votre choix.

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

Ajoutez la ligne suivante au bas du fichier avec le mot-clé exclude comme indiqué ci-dessous.

[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

Dans l'exemple ci-dessus, la ligne exclude désactivera les mises à jour pour « httpd », « php » et « mysql ». paquets. Essayons d'installer ou de mettre à jour l'un d'entre eux à l'aide de la commande YUM comme indiqué ci-dessous.

yum update httpd
OR
dnf update httpd
Exemple de sortie
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

Comment exclure des packages du dépôt EPEL

Pour exclure les installations ou les mises à jour de packages du référentiel EPEL, ouvrez le fichier appelé /etc/yum.repos.d/epel.repo.

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

Ajoutez la ligne d'exclusion en spécifiant les packages à exclure des mises à jour.

[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

Essayez maintenant de mettre à jour les fichiers spécifiés ci-dessus à partir du référentiel EPEL à l'aide de la commande yum/dnf comme indiqué.

dnf update perl php python
OR
yum update perl php python
Exemple de sortie
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.

Vous pouvez également utiliser l'option de ligne de commande yum/dnf pour exclure des packages sans les ajouter aux fichiers du référentiel.

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

Pour exclure une liste de packages, utilisez la commande comme suit.

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

De cette façon, vous pouvez exclure les mises à jour pour tous les packages de votre choix. Il existe de nombreuses autres façons de le faire, par exemple, nous avons récemment compilé un article sur 4 façons utiles de bloquer/désactiver ou verrouiller certains packages à l'aide de la commande yum sous Linux.