Debian - Bloquer les modifications d'un paquet
Posté le 04. Avril 2022 • 2 minutes • 339 mots • Autres langues: English
Lorsque vous installez un paquet, ce dernier vient avec ses dépendances de manière automatique. Ensuite lorsque vous mettez à jour votre distribution, certains paquets (et notamment les dépendances) peuvent être supprimés si ils ne sont plus nécessaires par exemple.
Dans certains cas il peut être important de bloquer la mise à jour d’un paquet précis ou d’empêcher qu’il soit supprimé lors d’un apt-get autoremove
ou autre upgrade
.
Méthode apt-mark :
La commande apt-mark permet de marquer un paquet de différente manière, voici quelques exemple d’option :
- auto : le marque comme étant un paquet installé automatiquement
- manual : le marque comme étant installé manuellement
- hold : retient le paquet
- unhold : supprime l’état hold
Lors de l’installation d’un paquet A, les dépendances B, C et D s’installent. Le paquet A sera marqué comme “manuel” par apt
et les paquets B, C et D seront marqués “auto”. Le jour où vous désinstallez le paquet A, les paquets B, C et D seront désinstallés automatiquement (sauf s’ils sont la dépendance de d’un autre paquet).
Admettons que vous souhaitiez conserver le paquet C même après suppression de A, il suffit de le marquer en “manuel” avec :
apt-mark manual paquetC
Autre cas, vous souhaitez que le paquet A ne soit jamais mis à jour automatiquement. Sa version est primordiale pour vous et vous souhaitez maîtriser le moment où il sera mis à jour. Pour cela, vous pouvez empêcher qu’il soit mis à jour ou supprimé par un processus automatique comme apt-get upgrade
avec :
apt-mark hold nondupaquet
apt-mark showhold
L’option showhold vous affichera la liste des paquets retenus.
Attention toutefois à ne pas trop abuser de cette méthode, vous vous retrouverez vite avec des problèmes de dépendances et de sécurité tôt ou tard.
Méthode alternative :
Vous pouvez faire la même chose avec le merveilleux dpkg
bien sûr !
echo "nom_du_paquet hold" | dpkg --set-selections
Et voilà !
Pour débloquer un paquet :
echo "nom_du_paquet install" | dpkg --set-selections
Pour avoir la liste des paquets bloqués :
dpkg --get-selections | grep hold