Système Linux · 9 min read · Dec 01, 2025
Comment bloquer les mises à jour des paquets et du noyau dans CentOS / Rocky Linux

Le gestionnaire de paquets est probablement l’outil le plus utile pour un utilisateur de Linux. Vous pouvez installer, mettre à niveau et supprimer n’importe quel logiciel/paquet de votre système Linux avec une seule commande. Mais parfois, vous avez besoin d’un contrôle granulaire sur le paquet que vous souhaitez installer ou mettre à niveau et sur le paquet à bloquer pour qu’il ne soit pas mis à niveau automatiquement. Pourquoi voudriez-vous faire cela ? Parfois, vous découvrez qu’une version mise à jour d’un paquet est boguée. Vous ne voulez pas que ce paquet soit mis à niveau la prochaine fois que vous exécutez sudo yum upgrade. Et il est pénible de mettre à niveau chaque paquet individuellement.
Dans ce tutoriel, nous allons couvrir comment bloquer certains paquets d’être installés ou mis à niveau et comment bloquer des versions spécifiques de paquets ou de noyaux d’être installées.
Remarque : Il est facile d’oublier quels paquets vous avez maintenus après un certain temps, même lorsque leurs versions sans bogues sont disponibles. Restez donc vigilant, car maintenir des paquets pendant longtemps peut introduire des problèmes de sécurité.
Nous allons discuter de cinq méthodes ici. Toutes ces méthodes impliqueront le gestionnaire de paquets yum ( Yellow dog Updater, Modified) et dnf ( Dandified YUM).
Prérequis
- Un serveur avec CentOS ou Rocky Linux ou Alma Linux. Rocky Linux 9 a été utilisé pour ce tutoriel, mais les commandes ici devraient fonctionner correctement avec les autres systèmes d’exploitation et les versions antérieures également.
- Un utilisateur non-root avec des privilèges sudo.
Méthode 1 - Désactiver définitivement l’installation/mise à jour des paquets (Utilisation de yum.conf)
Pour verrouiller un paquet de manière permanente afin qu’il ne soit pas installé, mis à jour ou supprimé, nous pouvons utiliser le fichier /etc/yum.conf ou /etc/dnf/dnf.conf.
Il devrait ressembler à ce qui suit.
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False
Si vous souhaitez maintenir un paquet, par exemple, nginx, pour qu’il ne soit pas installé, mis à jour ou supprimé, ajoutez la ligne suivante à la fin du fichier.
exclude=nginx
Si vous souhaitez arrêter tous les paquets nginx, vous pouvez utiliser le caractère *.
exclude=nginx*
Si vous souhaitez exclure plus d’un paquet, vous pouvez séparer leurs noms par un espace.
exclude=nginx php
Le paquet verrouillé restera à la même version même si vous mettez à niveau votre système. Cela est particulièrement utile pour maintenir les pilotes graphiques.
Essayons d’installer le paquet bloqué, nginx.
$ sudo dnf install nginx
ou
$ sudo yum install nginx
Vous obtiendrez une sortie similaire.
Dernière vérification de l'expiration des métadonnées : il y a 0:00:21 sur lun. 05 déc. 2022 10:42:01 UTC.
Tous les correspondances ont été filtrées par le filtrage d'exclusion pour l'argument : nginx
Erreur : Impossible de trouver une correspondance : nginx
Vous pouvez également bloquer des paquets via leur architecture ici. Par exemple, si vous souhaitez bloquer les paquets 32 bits, vous pouvez entrer la ligne suivante dans le fichier /etc/yum.conf.
exclude=*.i?86 *i686
Il y a un caveat important avec cette méthode. Bien que le paquet ne soit pas automatiquement mis à niveau lors de l’utilisation de la commande sudo yum upgrade ou lors de la mise à niveau du système, vous pouvez toujours supprimer le paquet manuellement. sudo yum remove fonctionnera toujours sur les paquets maintenus.
Cette méthode ne les verrouille que pour qu’ils ne soient pas changés automatiquement. Les maintenir en attente les gardera à leurs versions actuelles peu importe quoi, à moins que vous ne décidiez de les supprimer manuellement.
Bloquer les mises à jour du noyau
Pour bloquer la mise à jour du noyau, utilisez la commande suivante.
$ sudo dmf --exclude=kernel* update
ou
$ sudo yum --exclude=kernel* update
Vous pouvez utiliser kernel* comme nom de paquet dans toutes les autres méthodes pour bloquer les mises à jour du noyau.
Méthode 2 - Désactiver temporairement l’installation/mise à jour des paquets
Cette méthode implique d’utiliser la commande yum avec un paramètre supplémentaire.
Au moment de la mise à jour de n’importe quel paquet, utilisez le commutateur -x avec votre commande pour bloquer des paquets spécifiques que vous ne souhaitez pas mettre à jour.
$ sudo dnf -x nginx update
ou
$ sudo yum -x nginx update
La commande ci-dessus mettra à jour tous les paquets sauf le paquet nginx sur votre système. Pour bloquer plusieurs paquets avec une seule commande, utilisez le commutateur -x plusieurs fois.
$ sudo dnf -x nginx -x php update
ou
$ sudo yum -x nginx -x php update
Vous pouvez également utiliser le commutateur –exclude au lieu de -x de la même manière.
$ sudo dnf --exclude nginx, php
ou
$ sudo yum --exclude nginx, php
Méthode 3 - Utilisation du dépôt (Utilisation des fichiers .repo)
Si vous avez un paquet installé via son dépôt, alors il existe une autre façon de l’empêcher d’être mis à niveau. Cela se fait en modifiant son fichier .repo que vous pouvez trouver dans le répertoire /etc/yum.repos.d.
Supposons que votre système ait le dépôt Epel ajouté et que vous ne souhaitiez pas installer le paquet golang à partir de celui-ci, vous pouvez le bloquer en ajoutant la ligne exclude=certbot dans le fichier /etc/yum.repos.d/epel.repo comme montré.
[epel]
name=Extra Packages for Enterprise Linux 8 - $basearch
# Il est beaucoup plus sécurisé d'utiliser le metalink, mais si vous souhaitez utiliser un miroir local
# placez son adresse ici.
#baseurl=https://download.example/pub/epel/8/Everything/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-8&arch=$basearch&infra=$infra&content=$contentdir
enabled=1
gpgcheck=1
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
exclude=certbot
...
Maintenant, essayez d’installer le paquet certbot qui est disponible via le dépôt Epel.
$ sudo dnf install certbot
ou
$ sudo yum install certbot
Vous obtiendrez une sortie similaire.
Extra Packages for Enterprise Linux 8 - x86_64 20 kB/s | 4.5 kB 00:00
Tous les correspondances ont été filtrées par le filtrage d'exclusion pour l'argument : certbot
Erreur : Impossible de trouver une correspondance : certbot
Méthode 4 - Bloquer un dépôt entier de mise à jour
Alternativement, vous pouvez bloquer un dépôt entier d’être mis à jour.
Tout d’abord, vérifions tous les dépôts sur notre système.
$ dnf repolist
ou
$ yum repolist
Vous obtiendrez une sortie similaire.
repo id repo name
appstream Rocky Linux 8 - AppStream
baseos Rocky Linux 8 - BaseOS
digitalocean-agent DigitalOcean Agent
docker-ce-stable Docker CE Stable - x86_64
epel Extra Packages for Enterprise Linux 8 - x86_64
extras Rocky Linux 8 - Extras
nginx-stable nginx stable repo
Pour exclure le dépôt Epel de la mise à jour, utilisez la commande suivante.
$ sudo dnf update --disablerepo=epel
ou
$ sudo yum update --disablerepo=epel
Vous pouvez désactiver plusieurs dépôts en séparant leurs identifiants par des virgules.
$ sudo dnf update --disablerepo=epel, extras
ou
$ sudo yum update --disablerepo=epel, extras
Bloquer les dépôts via leur fichier repo
Il existe une autre façon de bloquer un dépôt qui implique de modifier le fichier repo particulier.
Ouvrons le fichier epel.repo pour l’éditer.
$ sudo nano /etc/yum.repos.d/epel.repo
Changez la valeur de la variable enabled de 1 à 0.
[epel]
name=Extra Packages for Enterprise Linux 8 - $basearch
# Il est beaucoup plus sécurisé d'utiliser le metalink, mais si vous souhaitez utiliser un miroir local
# placez son adresse ici.
#baseurl=https://download.example/pub/epel/8/Everything/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-8&arch=$basearch&infra=$infra&content=$contentdir
enabled=0
gpgcheck=1
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
...
Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.
Maintenant, essayons d’installer le paquet certbot qui est disponible dans le dépôt epel.
$ sudo dnf install certbot
ou
$ sudo yum install certbot
Vous obtiendrez une sortie similaire.
Dernière vérification de l'expiration des métadonnées : il y a 0:02:10 sur lun. 05 déc. 2022 10:48:31 UTC.
Aucune correspondance pour l'argument : certbot
Erreur : Impossible de trouver une correspondance : certbot
Méthode 5 - Bloquer les paquets à une version particulière (Utilisation du plugin versionlock)
Versionlock est un plugin pour le gestionnaire de paquets Yum. Ce plugin n’autorise pas les paquets à être mis à niveau vers une version supérieure à celle qui a été installée au moment où le verrouillage a été effectué.
Tout d’abord, installez versionlock.
$ sudo dnf install dnf-plugin-versionlock
ou
$ sudo yum install dnf-plugin-versionlock
Cela créera également un fichier /etc/yum/pluginconf.d/versionlock.list sur votre système.
Pour verrouiller la version actuelle de mariadb-server installée sur votre système, exécutez la commande suivante.
$ sudo dnf versionlock mariadb-server
ou
$ sudo yum versionlock mariadb-server
Vous obtiendrez une sortie similaire.
Dernière vérification de l'expiration des métadonnées : il y a 0:01:05 sur lun. 05 déc. 2022 12:14:16 UTC.
Ajout de versionlock sur : mariadb-server-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.*
Vous pouvez ajouter plusieurs paquets à la fois.
$ sudo dnf versionlock evolution golang
ou
$ sudo yum versionlock evolution golang
Vous obtiendrez une sortie similaire.
Dernière vérification de l'expiration des métadonnées : il y a 0:01:05 sur lun. 05 déc. 2022 12:14:16 UTC.
Ajout de versionlock sur : evolution-0:3.28.5-18.el8.*
Ajout de versionlock sur : golang-0:1.18.4-1.module+el8.7.0+1073+99e3b3cd.*
Essayons de mettre à jour le paquet mariadb-server.
$ sudo dnf update mariadb-server
ou
$ sudo yum update mariadb-server
Vous obtiendrez une sortie similaire.
Dernière vérification de l'expiration des métadonnées : il y a 0:02:07 sur lun. 05 déc. 2022 12:14:16 UTC.
Le paquet mariadb-server est disponible, mais non installé.
Aucune correspondance pour l'argument : mariadb-server
Erreur : Aucun paquet marqué pour mise à niveau.
Pour vérifier la liste des paquets bloqués via le plugin versionlock, utilisez la commande suivante.
$ dnf versionlock list
ou
$ yum versionlock list
Vous obtiendrez une sortie similaire.
Dernière vérification de l'expiration des métadonnées : il y a 0:00:05 sur mer. 07 déc. 2022 02:36:20 UTC.
elasticsearch-7.17.5-1.x86_64
mariadb-server-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.*
evolution-0:3.28.5-18.el8.*
golang-0:1.18.4-1.module+el8.7.0+1073+99e3b3cd.*
Pour supprimer le paquet du versionlock, utilisez la commande suivante.
$ sudo dnf versionlock delete mariadb-server
ou
$ sudo yum versionlock delete mariadb-server
Vous obtiendrez la sortie suivante.
Suppression de versionlock pour : mariadb-server-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.*
Pour annuler la liste et effacer les blocs, utilisez la commande suivante.
$ sudo dnf versionlock clear
ou
$ sudo yum versionlock clear
Alternativement, vous pouvez éditer le fichier /etc/yum/pluginconf.d/versionlock.list pour bloquer des paquets en utilisant le plugin versionlock.
Pour ajouter un paquet installé au fichier, utilisez la commande suivante.
$ sudo sh -c 'rpm -qa | grep evolution >> /etc/yum/pluginconf.d/versionlock.list'
La commande ci-dessus bloque le paquet evolution en l’ajoutant à la liste. Nous avons utilisé rpm -qa | grep evolution pour récupérer le nom complet du paquet. Et la
sudo sh -c commande exécute un shell sudo sous lequel les commandes pour écrire dans le fichier s’exécutent.
Conclusion
C’est tout pour ce tutoriel. Vous devriez maintenant être en mesure de bloquer n’importe quelles versions spécifiques de n’importe quels paquets que vous ne souhaitez pas installer ou mettre à niveau sur votre système CentOS ou Rocky Linux.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.