Mises à jour système · 8 min read · Dec 20, 2025
Comment bloquer les mises à jour de paquets et de noyaux dans Debian / Ubuntu

APT est probablement l’outil le plus utile pour un utilisateur 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 celui que vous souhaitez 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 apt upgrade. Et il est pénible de mettre à niveau chaque paquet individuellement.
Ce tutoriel couvrira 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 retenus 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 discuterons ici de deux méthodes. La première méthode bloquera toutes les installations et mises à niveau pour un certain paquet. La deuxième méthode offre un contrôle plus granulaire, vous permettant de bloquer des versions spécifiques d’un paquet.
Prérequis
- Un serveur avec un système d’exploitation Ubuntu ou Debian. Ubuntu 22.04 a été utilisé pour ce tutoriel, mais les commandes ici devraient également fonctionner correctement avec d’autres systèmes d’exploitation basés sur Debian et des versions antérieures.
- Un utilisateur non-root avec des privilèges sudo.
Méthode 1 (apt-mark)
Pour verrouiller un paquet afin qu’il ne soit pas installé, mis à jour ou supprimé, nous pouvons utiliser la commande apt-mark.
Si vous souhaitez retenir un paquet, par exemple, htop, pour qu’il ne soit pas installé, mis à jour ou supprimé, utilisez la commande suivante.
$ sudo apt-mark hold htop
Vous devriez voir la sortie suivante.
htop set on hold.
Le paquet verrouillé restera à la même version même si vous mettez à niveau votre système. Cela est particulièrement utile pour retenir les pilotes graphiques.
Pour supprimer la retenue sur le paquet, exécutez la commande suivante.
$ sudo apt-mark unhold htop
Vous devriez voir la sortie suivante.
Canceled hold on htop.
Il y a un caveat important à cela. Bien que le paquet ne soit pas automatiquement mis à niveau lors de l’utilisation de la commande sudo apt upgrade ou lors de la mise à niveau du système, vous pouvez toujours supprimer le paquet manuellement. sudo apt remove fonctionnera toujours sur les paquets retenus.
Cette méthode ne les verrouille que pour qu’ils ne soient pas changés automatiquement. Les garder en attente les maintiendra à leurs versions actuelles peu importe quoi, à moins que vous ne décidiez de les supprimer manuellement.
Méthode 2 (/etc/apt/preferences)
Cette méthode consiste à éditer le fichier /etc/apt/preferences où vous pouvez spécifier exactement quelle version de quel paquet provenant de quel dépôt est installée.
Chaque paquet obtient une priorité numérique sur laquelle APT décide s’il doit installer le paquet ou non et si oui, alors de quel dépôt il doit le récupérer.
Par exemple, vérifions quelques détails sur le paquet nginx. Exécutez la commande suivante.
$ apt-cache policy nginx
Vous devriez voir une sortie similaire.
nginx:
Installed: (none)
Candidate: 1.22.1-1~jammy
Version table:
1.22.1-1~jammy 500
500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
1.22.0-1~jammy 500
500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
1.20.2-1~jammy 500
500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
1.18.0-6ubuntu14.3 500
500 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
500 http://us.archive.ubuntu.com/ubuntu jammy-security/main amd64 Packages
1.18.0-6ubuntu14 500
500 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 Packages
Vous verrez qu’il y a deux dépôts d’où nginx s’installe. Le premier est le dépôt d’Ubuntu et le second est le dépôt de nginx.
Vous pouvez voir 500 écrit contre tous les dépôts. Ce nombre spécifie la priorité du paquet. Comme il est le même pour tous les dépôts, les chances que nginx provienne de l’un ou l’autre des dépôts sont les mêmes. Alors, comment le système décidera-t-il quel paquet choisir ? Il choisira la version la plus élevée qui existe. Dans ce cas, c’est 1.22.1. Pour Ubuntu, le numéro de version complet devient 1.22.1-1~jammy.
Si vous ne souhaitez pas mettre à niveau vers la version 1.22.1 et souhaitez la bloquer, vous devez éditer le fichier /etc/apt/preferences.
Ouvrez le fichier dans l’éditeur nano.
$ sudo nano /etc/apt/preferences
Cette commande vous aidera également à créer le fichier s’il n’existait pas dans le système auparavant.
Collez le code suivant dans le fichier.
Package: nginx
Pin: version 1.22.1-1~jammy
Pin-Priority: -1
Définir la priorité à quoi que ce soit inférieur à 0 signifie que le paquet ne sera pas installé. Si vous souhaitez qu’un paquet soit toujours installé, définissez sa priorité à 1000 ou plus.
Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.
Vérifions à nouveau le paquet.
$ apt-cache policy nginx
Vous verrez la sortie suivante.
nginx:
Installed: (none)
Candidate: 1.22.0-1~jammy
Version table:
1.22.1-1~jammy -1
500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
1.22.0-1~jammy 500
500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
1.20.2-1~jammy 500
500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
1.18.0-6ubuntu14.3 500
500 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
500 http://us.archive.ubuntu.com/ubuntu jammy-security/main amd64 Packages
1.18.0-6ubuntu14 500
500 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 Packages
Remarquez-vous une différence ? La version de publication candidate est passée de 1.22.1 à 1.22.0. Cela signifie que la prochaine version supérieure que le système installera maintenant est 1.22.0. Vous remarquerez également -1 écrit contre la dernière version, ce qui signifie que le système doit ignorer cette version.
Ignorer une version mais autoriser l’autre
Vous pouvez ajouter plusieurs entrées pour le même paquet dans le fichier. Par exemple, ajoutez le code suivant au fichier.
Package: nginx
Pin: version 1.22.1-1~jammy
Pin-Priority: -1
Package: nginx
Pin: version 1.20.2-1~jammy
Pin-Priority: 1000
Ici, nous disons au système d’ignorer la version 1.22.1 mais d’installer toujours la version 1.20.2.
Vérifions à nouveau en utilisant la commande apt-cache policy.
nginx:
Installed: (none)
Candidate: 1.20.2-1~jammy
Version table:
1.22.1-1~jammy -1
500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
1.22.0-1~jammy 500
500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
1.20.2-1~jammy 1000
500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
1.18.0-6ubuntu14.3 500
500 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
500 http://us.archive.ubuntu.com/ubuntu jammy-security/main amd64 Packages
1.18.0-6ubuntu14 500
500 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 Packages
La version candidate est maintenant passée à 1.20.2 au lieu de 1.22.0.
Changer la préférence du dépôt
Considérons un cas de plus. Que faire si nous voulons bloquer Nginx d’être installé depuis son dépôt et choisir le dépôt Ubuntu à la place ? Une façon serait de supprimer le dépôt Nginx, mais vous pouvez à nouveau utiliser le fichier de préférences pour choisir le dépôt pour vous.
Entrez le code suivant dans le fichier.
Package: nginx
Pin: release o=nginx
Pin-Priority: -1
Le mot-clé release spécifie simplement la prochaine version supérieure. o=nginx fait référence à l’origine du paquet. Ici, c’est nginx. Cela signifie que le système ne doit pas installer le paquet nginx depuis son dépôt. Une autre façon d’obtenir le même résultat est d’utiliser le code suivant.
Package: nginx
Pin: release o=jammy
Pin-Priority: 1000
Cette fois, nous avons défini la priorité 1000 du paquet du dépôt Ubuntu (jammy). Cela garantira que Nginx est toujours installé à partir du dépôt Ubuntu et non d’ailleurs.
Non seulement vous pouvez spécifier l’origine du paquet, mais vous pouvez également ajouter l’archive, le composant, l’étiquette et l’architecture du paquet que le système doit choisir en utilisant les mots-clés suivants sous la section Pin.
- c -> Composant
- a -> Archive
- o -> Origine
- l -> Étiquette
- n -> Architecture
Blocage des mises à jour spécifiques du noyau
Voyons comment nous pouvons bloquer des mises à jour spécifiques du noyau. Listez tous les paquets liés au noyau sur votre système.
$ dpkg -l "*$(uname -r)*" | grep kernel | awk '{print $2}'
Vous verrez une sortie similaire.
linux-headers-5.15.0-33-generic
linux-image-5.15.0-33-generic
linux-modules-5.15.0-33-generic
linux-modules-extra-5.15.0-33-generic
Les méthodes suivantes devront être répétées pour tous les paquets obtenus ici.
Méthode 1 (apt-mark)
Tout d’abord, vérifions quelle version du noyau est active. Pour ce faire, exécutez la commande suivante.
$ uname -r
Vous devriez voir une sortie similaire.
5.15.0-53-generic
Pour empêcher le noyau d’être mis à niveau, nous pouvons simplement utiliser la commande apt-mark.
$ sudo apt-mark hold linux-image-$(uname -r)
Vous devriez voir une sortie similaire.
linux-image-5.15.0-53-generic set on hold.
Vous pouvez suivre la même méthode pour bloquer les en-têtes du noyau en bloquant le paquet linux-headers-$(uname -r).
Méthode 2 (/etc/apt/apt.conf.d/50unattended-upgrades)
La deuxième méthode implique le fichier /etc/apt/apt.conf.d/50unattended-upgrades.
Ouvrez-le pour l’éditer.
$ sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Faites défiler jusqu’à la section Unattended-Upgrade::Package-Blacklist et éditez comme suit.
Unattended-Upgrade::Package-Blacklist {
"linux-generic";
"linux-image-generic";
"linux-headers-generic";
"linux-modules-generic";
"linux-modules-extra-generic";
};
Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.
Méthode 3 (dpkg)
Pour maintenir la mise à niveau du noyau à l’aide de dpkg, exécutez la commande suivante. Cette commande maintiendra tous les paquets liés au noyau en même temps.
$ for i in $(dpkg -l "*$(uname -r)*" | grep kernel | awk '{print $2}'); do echo $i hold | dpkg --set-selections; done
Pour supprimer la retenue, utilisez la commande suivante.
$ for i in $(dpkg -l "*$(uname -r)*" | grep kernel | awk '{print $2}'); do echo $i install | dpkg --set-selections; done
Méthode 4 (/etc/apt/preferences)
Vérifions d’abord les détails concernant la version actuelle du noyau.
$ apt-cache policy linux-image-$(uname -r)
Vous devriez voir la sortie suivante.
linux-image-5.15.0-53-generic:
Installed: 5.15.0-53.59
Candidate: 5.15.0-53.59
Version table:
*** 5.15.0-53.59 500
500 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
500 http://us.archive.ubuntu.com/ubuntu jammy-security/main amd64 Packages
100 /var/lib/dpkg/status
Bien que le noyau 5.15.0.53 soit à sa dernière version au moment de la rédaction de ce tutoriel, nous supposons que la prochaine version est déjà sortie (5.15.0.56 est la version stable actuelle du noyau Linux).
Pour bloquer la prochaine version du noyau, entrez le code suivant dans le fichier /etc/apt/preferences.
Package: linux-image-5.15.0-53-generic linux-headers-5.15.0-33-generic linux-modules-5.15.0-33-generic linux-modules-extra-5.15.0-33-generic
Pin: version 5.15.0-53.59
Pin-Priority: -1
Le code ci-dessus bloquera Ubuntu d’installer des mises à jour du noyau.
Vous pouvez suivre les méthodes 2 et 3 pour n’importe quel paquet régulier, pas seulement pour le noyau.
Conclusion
C’est tout pour ce tutoriel. Vous devriez maintenant être en mesure de bloquer n’importe quelle version ou des versions spécifiques de n’importe quels paquets que vous ne souhaitez pas voir installés ou mis à niveau sur votre système Ubuntu ou Debian. Si vous avez des questions, posez-les dans les commentaires ci-dessous.
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.