Le système de gestion des dépendances sous Linux est assez particulier puisqu’il permet d’installer les dépendances à la volée lors de l’installation d’un paquet. Or, au moment de supprimer ledit paquet ainsi que ses dépendances, on en laisse bien souvent dans le système, alors voici comment supprimer un paquet et ses dépendances.
Installation de tous les paquets
Tout d’abord, préférez l’utilisation d’aptitude et non d’apt-get lors de la suppression. Il permet de mieux gérer les dépendances et leur suppression.
apt-get install aptitude
Installez deborphan pour repérer les dépendances non-satisfaites : notamment les bibliothèques installés qui ne servent plus suite à la désinstallation d’un paquet.
aptitude install deborphan
Syam44 a également créer un petit logiciel couplé à aptitude qui permet d’identifier les paquets non utilisés et les dépendances circulaires non satisfaites.
wget https://github.com/syam44/fix-aptitude-dependencies/blob/master/fix-aptitude-dependencies.deb
dpkg -i fix-aptitude-dependencies.deb
Supprimer totalement un paquet et ses dépendances
Je voulais supprimer « imagemagick« , voyons les deux commandes utilisées.
aptitude purge imagemagick
Ce qui donne le résultat :
root@debian:/home/dinath# aptitude purge imagemagick
Les paquets suivants seront ENLEVÉS :
imagemagick{p} imagemagick-6.q16{u}
0 paquets mis à jour, 0 nouvellement installés, 2 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 0 o d'archives. Après dépaquetage, 892 ko seront libérés.
Voulez-vous continuer ? [Y/n/?]
Soit deux paquets à supprimer.
apt-get autoremove imagemagick*
L’opérateur « * » permet de supprimer tous les paquets liés à imagemagick en inclûant cette regex.
root@debian:/home/dinath# apt-get autoremove imagemagick*
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Note, selecting 'imagemagick' for glob 'imagemagick*'
Note, selecting 'imagemagick-6.q16' for glob 'imagemagick*'
Note, selecting 'imagemagick-dbg' for glob 'imagemagick*'
Note, selecting 'imagemagick-doc' for glob 'imagemagick*'
Note, selecting 'imagemagick-6.defaultquantum' for glob 'imagemagick*'
Note, selecting 'imagemagick-common' for glob 'imagemagick*'
Note : sélection de « imagemagick-6.q16 » au lieu de « imagemagick-6.defaultquantum »
Le paquet « imagemagick-dbg » n'est pas installé, et ne peut donc être supprimé
Le paquet « imagemagick-doc » n'est pas installé, et ne peut donc être supprimé
Les paquets suivants seront ENLEVÉS :
imagemagick imagemagick-6.q16 imagemagick-common libmagickcore-6.q16-2 libmagickcore-6.q16-2-extra libmagickwand-6.q16-2
0 mis à jour, 0 nouvellement installés, 6 à enlever et 0 non mis à jour.
Après cette opération, 9 507 ko d'espace disque seront libérés.
Souhaitez-vous continuer ? [O/n]
Soit 6 paquets.
Sachez que vous pouvez et devez sûrement utiliser ces deux commandes, mais attention. Certaines dépendances sont liées à d’autres plus importantes, vérifiez soigneusement les paquets sur le point d’être supprimés.
Deborphan
Deborphan permet de repérer les bibliothèques non utilisées. Il s’utilise simplement avec la commande « deborphan ».
[6] Recherche de paquets obsolètes
aptitude remove libestools2.4:amd64
root@debian:/home/dinath# aptitude remove libestools2.4:amd64
Les paquets suivants seront ENLEVÉS :
libestools2.4
0 paquets mis à jour, 0 nouvellement installés, 1 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 0 o d'archives. Après dépaquetage, 3 496 ko seront libérés.
(Lecture de la base de données... 168509 fichiers et répertoires déjà installés.)
Suppression de libestools2.4:amd64 (1:2.4~release-2+b1) ...
Traitement des actions différées (« triggers ») pour libc-bin (2.23-1) ...
Ce code provient de mon script de mise à jour.
Fix-aptitude-dependencies
Ce script permet de repérer les logiciels non-utilisés.
root@debian:/home/dinath# fix-aptitude-dependencies
Recherche des actions prévues et des dépendances cassées...
État Depuis Vers Paquet
------------------------------------------------------------------------------
id 5.3.1-3 5.3.1-3 libbrlapi0.6
id 0.1.3-2.1 0.1.3-2.1 libopencore-amrnb0
id 0.1.3-2.1 0.1.3-2.1 libopencore-amrwb0
id 2.1.1-2 2.1.1-2 libqca2
id 2.1.1-2 2.1.1-2 libqca2-plugins
id 4:4.8.7+dfsg-8 4:4.8.7+dfsg-8 libqt4-sql
id 4:4.8.7+dfsg-8 4:4.8.7+dfsg-8 libqt4-sql-mysql
id 4:4.8.7+dfsg-8 4:4.8.7+dfsg-8 libqt4-sql-sqlite
id 14.4.1-5+b1 14.4.1-5+b1 libsox-fmt-alsa
id 14.4.1-5+b1 14.4.1-5+b1 libsox-fmt-base
id 14.4.1-5+b1 14.4.1-5+b1 libsox2
id 0.1-4 0.1-4 sound-icons
id 14.4.1-5+b1 14.4.1-5+b1 sox
id 5.3.1-3 5.3.1-3 xbrlapi
Vous pouvez supprimer les paquets en fin de ligne, mais attention, encore une fois en root vous supprimer tout et n’importe quoi, y compris les metapaquets liés au dépendances que vous pourriez supprimer.
Soyez prudent, et utilisez Google pour vous assurer que vous pouvez supprimer le paquet sans risque.
La commande suivante permet de rechercher la description d’un paquet
aptitude search <paquet>
Pour récupérer les librairies requises et une description complète du paquet.
apt-cache show
Supprimer la configuration d’un paquet
La commande suivante permet de supprimer les fichiers de configuration des différents paquets supprimés.
aptitude purge ~c