Skip to Content

Garder un système Debian/Ubuntu propre avec deborphan, debfoster ou Aptitude

On s’aperçoit toujours que le nombre de paquets sur un système Debian s’accroît avec le temps et qu’il en devient assez vite lent lors des mises à jour (surtout dans le cas de SID ou de Testing).

Introduction

On s’aperçoit toujours que le nombre de paquets sur un système Debian s’accroît avec le temps et qu’il en devient assez vite lent lors des mises à jour (surtout dans le cas de SID ou de Testing).

Voici un scénario classique : on veut essayer un logiciel ’toto’. ’Apt-get install toto’ nous installe ledit logiciel, mais très souvent le logiciel aura des dépendances et des paquets supplémentaires seront installes : on se retrouve avec ’toto’, ’toto-common’, ’toto-data’, ’toto-bin’, ’libtoto1’, ’libtruc2’ etc. Puis le logiciel ne nous plaît pas, ’apt-get remove toto’. Et c’est là que le système va commencer à se polluer avec des paquets inutiles, premièrement ’toto’ aura laissé ses fichiers de configuration parce qu’assez peu de gens prennent l’habitude de purger les paquets dont ils n’ont pas personnalisé la configuration, et deuxièmement toutes les dépendances de ’toto’ vont rester installées sur le système.

Au bout d’un certain temps on peut facilement se retrouver avec un système de 150 000 fichiers, 2000 paquets alors qu’en fin de compte on a pas beaucoup de logiciels installés.

Même si vous avez beaucoup d’espace disque, les bases de données de apt sont de simples fichiers plats et les recherches dans ces fichiers peuvent devenir vraiment très longues.

Heureusement qu’il existe des outils Debian comme Deborphan et Debfoster spécialement conçus pour entretenir votre système et ne garder que les paquets réellement utiles.

Deborphan

Deborphan (disponible dans le paquet du même nom) permet de trouver toutes les dépendances inutiles, restées après la suppression des paquets.

Invoqué sans options supplémentaires

# deborphan
va chercher des librairies dont ne dépend aucun logiciel (le cas de notre ’libtoto’).

Il dispose de beaucoup d’options —guess-common, —guess-dev, —guess-perl, —guess-python pour chercher respectivement les paquets dev, common, librairies perl, python etc. Avec option —guess-all deborphan va chercher tous les paquets orphelins qu’il pourra.

Il est possible que vous ayez installé certaines librairies pour faire fonctionner des logiciels non empaquetés qui se trouvent dans /opt ou /usr/local, dans ce cas il faut signaler ces paquets a deborphan, autrement vous risquez de les supprimer, ce qui empêchera de fonctionner vos logiciels compilés.

/var/lib/deborphan/keep contient la liste des paquets à ignorer lors de recherches avec deborphan. La commande

# deborphan -A package
permet d’ajouter package a cette liste.

Vous pouvez aussi préciser les paquets à conserver avec l’option —exclude= en ligne de commande.

Une autre option intéressante est -n, elle permet de prendre en compte les dépendances de type ’suggère’ et ne pas lister un paquet dont rien ne dépend, mais qu’un autre paquet suggère.

Une fois que vous êtes satisfait de la liste affichée par deborphan, vous pouvez supprimer ces paquets

# apt-get --purge remove `deborphan -n --guess-all`

Ensuite, si vous relancez deborphan vous verrez que d’autres paquets sont devenus orphelins : c’est normal, certaines librairies dépendent les unes des autres sans pour autant être nécessaires. Vous pouvez donc supprimer les paquets orphelins jusqu’à ce qu’il n’en reste plus.

Debfoster

Il est disponible dans le paquet debfoster. Ce logiciel est plus interactif que deborphan, il fonctionne un peu différemment. Pour le lancer tapez simplement

# debfoster
il va alors rechercher tous les paquets qui n’existent que pour satisfaire des dépendances et vous demander s’il faut garder ou non le paquet qui en depend. Par exemple :

[...]
mplayer is keeping the following 14 packages installed:
 libdirectfb-0.9-25 libdvdnav4 libfaac0 libggi2 libgii1 libgii1-target-x
 libmpcdec3 libopenal0a libsdl1.2debian libsdl1.2debian-alsa libsvga1
 libtwolame0 libxvidcore4 mplayer-skin-blue
Keep mplayer? [Ynpsiuqx?], [H]elp:

La reponse par defaut Y, va garder mplayer, n va supprimer (et purger) mplayer et p (prune) va supprimer mplayer et toutes ses dépendances.
Une fois que vous aurez répondu a toutes les questions (la première fois comptez bien 10-15 minutes) debfoster va créer un fichier (/var/lib/debfoster/keepers) de paquets a garder (il ne vous posera plus de questions a leur sujet au prochain lancement) et lancer apt pour supprimer les paquets que vous avez marqué inutiles.

C’est une autre approche du nettoyage de son système qui peut être très efficace, mais qui demande plus de temps que deborphan.

Une option très utile est -a

# debfoster -a
va marquer tous les paquets actuellement installes comme ’à garder’, cette commande peut par exemple être exécutée après une installation de base de votre système pour vous éviter des questions inutiles par la suite.

Purger les paquets supprimes

Il est facile d’afficher des paquets supprimés mais non purgés dont il reste des résidus de configuration :

# dpkg --list | grep ^rc | awk '{print $2}'
... et pour les purger :

# COLUMNS=300 dpkg --list | grep ^rc | awk '{print $2}' | xargs dpkg -P
(COLUMNS=300 permet ’d’élargir’ le pipe ce qui évite que les noms de paquets trop longs soient tronqués, astuce du livre ’Administration Debian’ de Martin Krafft)

Aptitude

Aptitude propose une autre manière de garder un système propre : il tient, en parallèle, une autre base de données, dans laquelle il fait la différence entre les paquets installés explicitement et les paquets installés pour satisfaire des dépendances. A chaque lancement Aptitude va donc vous proposer de supprimer tous les paquets marqués ’auto’ et dont aucun logiciel installé manuellement ne dépend.

De plus c’est un logiciel avec une vraie interface ncurses, des menus où vous pouvez planifier toutes les opérations d’installation/suppression et les executer qu’une fois définies.

C’est une méthode très efficace, mais avec un petit inconvénient : toutes les opérations d’installation/suppression devront se faire avec ’aptitude install ...’, ’aptitude remove/purge ...’ ou alors avec l’interface graphique de ’aptitude’, si jamais vous installez un logiciel avec apt, dselect ou dpkg, aptitude le considérera comme ’auto’ et s’empressera de le supprimer. Cela implique son utilisation exclusive, dès l’installation du système de base.

Si votre système comporte déjà des paquets ne faisant pas partie du système de base et que vous voulez commencer à utiliser aptitude, c’est possible. Deux solutions s’offrent à vous : marquer tous les paquets déjà installés comme ’installés manuellement’ :

# aptitude unmarkauto --schedule-only '~i'
L’inconvénient est que si vous supprimez un paquet installé avant le passage à aptitude, aptitude ne sera pas en mesure de supprimer ses dépendances, car celles-ci seront marquées comme installées manuellement. On peut en partie remédier à cette situation avec :

# aptitude markauto '~slibs'
qui va marquer ’auto’ toutes les libraires. Mais la meilleure solution pour passer à aptitude reste quand même le passage au crible de tous vos paquets installés. Pour cela ouvrez l’interface d’aptitude, vous verrez tous les paquets ’auto’ qu’aptitude veut supprimer, surlignés en violet, vous pourrez alors retrouver les programmes finaux dont ils comblent les dépendances et marquer ceux-ci comme installés manuellement, jusqu’à ce qu’aptitude consente à garder les paquets dont vous avez besoin ainsi que leurs dépendances.

La meilleure stratégie avec aptitude est de garder seulement un minimum (20-30) de paquets comme installés à la main, les logiciels finaux que vous utiliser réellement (traitement de texte, navigateur, messagerie, environnements de développement, compilateurs...). Tout le reste étant marqué auto, dès que vous supprimerez une application inutile toutes ses dépendances seront supprimées par aptitude.

Aptitude est un très bon outil, mais il faut toujours garder à l’esprit cette double base de données, si vous installez un logiciel avec apt ou dpkg il faudra vite le marquer ’manual’ dans aptitude. Il est donc une alternative à l’utilisation de deborphan/debfoster, c’est un choix en fonction de la flexibilité et du contrôle des paquets qu’on souhaite.

Conclusion

Maintenant vous avez tous les outils pour garder un système Debian ou Ubuntu propre et fonctionnel pendant longtemps ! Pas besoin de ’formater’ votre ordinateur des qu’il devient un peu lent, sous Linux ;-)

Pour finir, un exemple personnel d’utilisation des ces outils : sur un ordinateur, où j’ai pendant un an negligé la ’propreté’ du système (1200 paquets, 115 000 fichiers), je suis passé à 870 paquets et 82 000 fichiers tout en conservant tous mes programmes et fonctionnalités.

Si jamais vous êtes dans le doute au sujet de l’utilité d’un paquet, n’oubliez pas de consulter

$ apt-cache show nom-du-paquet | less
Rappelez-vous aussi que la suppression d’une librairie ne peut jamais empêcher un autre paquet de fonctionner, si c’est le cas, apt ou dpkg vous le signalera et refusera de supprimer la lib en question.

Pour plus d’informations sur ces outils voyez les manuels de deborphan, debfoster et dpkg (en anglais). Ainsi que le paquet ’aptitude-doc-fr’ qui contient toute la documentation d’Aptitude au format html.

Commentaires

> Garder un système Debian/Ubuntu propre avec deborphan, debfost

Je me suis permis de corriger directement l’article car il était déjà publié.

Merci Thierry pour la relecture.

> Garder un système Debian/Ubuntu propre avec deborphan, debfost

Chapitre deborphan :
Tu as répété deux fois l’option —guess-dev.

A par cela, super article même pour moi qui n’utilise pas Debian, je le trouve limpide. Mais, bon je ne vais pas te dire ça à chaque fois, tu ne croiras plus ;-)

Bravo, c’est toujours un plaisr de te lire.

> Garder un système Debian/Ubuntu propre avec deborphan et debfo

Avec plaisir pour le CR :-)

> Garder un système Debian/Ubuntu propre avec deborphan et debfo

Ca marche ! Je fais un compte-rendu ce mardi alors ?

> Garder un système Debian/Ubuntu propre avec deborphan et debfo

Tiens je ne connaissais pas ce livre. Tu pourrais me l’apporter dans 15 jours ?, car mardi prochain, je ne suis pas là.

Autrement, pour dselect, c’est étonnant, car Raphaël Hertzog a également contribué à ce livre ;-)

> Garder un système Debian/Ubuntu propre avec deborphan et debfo

Moi j’ai ’Administration Debian avancée’ de Martin Krafft où il préfère dselect. Bon je suis content qu’on soit arrivés à un article plus neutre ou on expose tous les outils :)