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.