Garder sa distribution GNU/Linux propre comme un sou neuf (première partie)

Bien que la robustesse des systèmes de fichiers les plus fréquemment utilisés sous GNU/Linux et leur capacité intrinsèque à ne pas se fragmenter à l’utilisation ne soit plus à démontrer, force est de constater que la fréquence des mise à jour, quand ce n’est pas la succession d’installations/désinstallations de programmes contribuent néanmoins à encombrer inutilement le système de paquets obsolètes voire orphelins.
De même l’utilisation fréquente des applications de messagerie ou de navigation sur le web se traduit inévitablement par la mise en cache d’un grand nombre de fichiers temporaires, qui s’ils ne sont pas purgés périodiquement contribuent eux aussi à « l’encrassement » général du système…

Sans prétendre à l’exhaustivité, cet article se veut être un recueil de bonnes pratiques visant à maintenir son système GNU/Linux aussi propre que possible.

Comme d’habitude, nous nous intéresserons plus particulièrement aux distributions de type Debian/Ubuntu et dérivées, et dans ce premier article nous aborderons les outils disponibles en ligne de commande. Il en existe évidemment d’autres en mode graphique qui leur sont complémentaires ou qui permettent d’aller plus loin, aussi je leur consacrerai un prochain billet sur ce blog.

A chaque installation ou mise à jour d’un paquet logiciel, ce dernier est  téléchargé depuis les dépôts avant installation, puis est conservé en cache pour pouvoir être rapidement réinstallé, le cas échéant.
Si cette politique est tout à fait louable pour économiser de la bande passante et gagner du temps sur le téléchargement, on se retrouve très rapidement avec un cache de paquets de plusieurs giga-octets dont on peut facilement venir à bout :

sudo aptitude clean && sudo aptitude autoclean

Si l’on gagne ainsi un espace disque non négligeable, on peut cependant faire mieux. Chaque désinstallation de logiciel laisse en général (sauf si l’on a pris soin d’utiliser l’option –purge) des fichiers de configurations dont on peut se débarrasser facilement :

sudo aptitude purge ~c

Au reste, on peut sans forcément le savoir conserver au sein du système de nombreux paquets devenus obsolètes au fil des mise à jour que l’on éliminera comme suit :

sudo aptitude purge ~o

Sans faire preuve de frilosité outre mesure, on peut tout à fait préférer vérifier ce que l’on s’apprête à supprimer. Il suffira pour cela de remplacer dans ce qui précède l’argument purge par search, tout simplement…

A ce stade, vous aurez remarqué que j’utilise le gestionnaire de paquet aptitude au lieu d’apt-get qui est plus volontiers invoqué dans la documentation. De mon point de vue, étayé par cet article ou encore celui-ci, aptitude est à la fois plus souple et plus puissant qu’apt-get, et avant tout gère mieux les dépendances, y compris et surtout pour les mises à niveau de distributions. C’est également une habitude que j’ai prise depuis la Debian 3.1 « Sarge » et dont je n’ai pas envie de me défaire…

Maintenir propre sa base de paquets est une bonne chose, mais on peut cependant aller plus loin et débarrasser son système de nombre de fichiers inutiles, à commencer par les bibliothèques orphelines ou les fichiers de traduction dans les langues autres que la sienne. Pour cela on va se servir de deux programmes extrêmement utiles et efficaces que sont deborphan et localepurge. Installons-les pour commencer :

sudo aptitude install -r deborphan localepurge

deborphan (et son pendant graphique gtkorphan) repère les bibliothèques orphelines i.e. les composants de programmes rendus inutiles par désinstallation mais non supprimés par la gestion automatique des dépendances. Invoqué sans plus d’arguments à la ligne de commande, deborphan dresse la liste des « orphelins ». On l’utilise en général combiné à d’autre programmes, voire au sein de scripts shells :

deborphan | xargs sudo aptitude -y purge

supprimera les orphelins mais si l’on veut supprimer les paquets -dev devenus inutiles il suffira de faire :

deborphan --guess-dev | xargs sudo aptitude -y purge

Enfin, si l’on a pas froid aux yeux (et fait quelques vérifications préalables) on peut aussi procéder à un nettoyage radical avec :

deborphan --guess-all | xargs sudo aptitude -y purge

Pour en terminer avec la suppression des paquets inutilisés, voici un exemple de script de nettoyage permettant d’automatiser ce genre de tâche :

[sourcecode language= »bash » highlight= »3,31″]
#!/bin/zsh
echo « liste des paquets inutilisés : »
deborphan
echo « nettoyer? o/n »
read netdeb
if [[ $netdeb == o ]]
then
apt-get remove –purge `deborphan`
fi
echo « paquets desinstallés avec fichiers de config présents »
dpkg -l |grep « rc   » | awk ‘{ print $1″: »$2 }’ > liste_nom
for i in `more liste_nom`
do
echo $i > temp_verif
verif=`awk -F ‘:’ ‘{ print $1 }’ temp_verif`
if [[ $verif == « rc » ]]
then
paquet=`awk -F ‘:’ ‘{ print $2 }’ temp_verif`
echo « purger le paquet : » $paquet « ?  o/n »
read netconf
if [[ $netconf == « o » ]]
then
dpkg –purge $paquet
fi
fi
done
# nettoyage fichiers temporaires
rm liste_nom temp_verif
[/sourcecode]

Par ailleurs, l’internationalisation toujours plus poussée amène avec elle un inconvénient de taille, si l’on peut dire, sous la forme des traductions des pages de man. Hormis l’anglais qui est la langue native du système et le français la langue d’usage il est inutile de conserver l’ensemble des traductions et pour cela localepurge est notre ami. A l’installation, il suffit de cocher les cases en, fr et fr_FR :

configuration de localepurge
Configuration de localepurge.

Quant à l’usage on peut invoquer directement localepurge dans un terminal pour constater immédiatement son action, cependant c’est également sur le long terme que son action est efficace puisqu’il entre en action à la moindre installation de paquet afin de ne conserver que les traductions voulues.

Résultat
Résultat

Le seul reproche que l’on peut adresser à localepurge, c’est de ne pas éliminer toutes les traductions, notamment les fichiers d’internationalisation de l’interface graphique.
Voilà la transition toute trouvée pour aborder le thème de mon prochain article, car c’est précisément une situation à laquelle on remédiera en utilisant d’autres outils, graphiques cette fois.

D’ici quelques jours, je vous proposerai donc d’examiner plus avant le fonctionnement de Synaptic, Computer Janitor pour la gestion des paquets, BleachBit et Fslint pour le nettoyage sans oublier, mais cette fois-ci uniquement pour Ubuntu, cet outil fort pratique qu’est Ubuntu Tweak…


8 réflexions au sujet de « Garder sa distribution GNU/Linux propre comme un sou neuf (première partie) »

  1. En ce qui concerne l’usage d’aptitude vis à vis d’apt-get, et dans la mesure ou les dépendances entre paquets se doivent d’être toujours satisfaites, l’intérêt du premier par rapport au second se situe plus au niveau des suppressions de paquets que des installations : supprimer un paquet avec aptitude purge [paquet] revient au même que apt-get remove --purge [paquet] suivi de apt-get --purge autoremove. La première ligne purge le paquet alors que la deuxième débarrasse le système des dépendances, alors qu’aptitude le fait en une seule ligne. Après on peut toujours modifier le comportement d’apt-get en modifiant /etc/apt/apt.conf en y insérant APT::Get::Purge "true".
    En revanche à l’installation, apt-get suggère les paquets recommandés mais ne les installe pas, sauf à utiliser l’option --with-recommends, alors qu’aptitude traite les recommandés comme des dépendances… De même, lors d’une mise à niveau de distribution, aptitude propose des scénarios qui éviteront de casser des paquets…
    Bref , moyennant une bonne connaissance des options et éventuellement et ajustant la configuration on peut obtenir le même comportement de l’une ou l’autre application, mais cependant selon moi mieux vaut utiliser aptitude dès le début et s’y tenir… Par ailleurs aptitude inclut nativement une interface graphique bien pratique en mode console, ce qui s’avère bien utile sur les serveurs, notamment. Dernière chose, l’option -s qui permet de simuler une action avant de l’accomplir.
    Mais je reviendrai sur tout ça avec l’usage de Synaptic qui a l’avantage de synthétiser la gestion des paquets…
    En effet Computer Janitor ne fait plus partie des sélections de base… mais il reste présent dans les dépôts et tout à fait installable.

  2. Merci pour l’article très utile, je connaissais déjà deborphan et localepurge (dont je ne savais pas qu’il n’éliminait pas toutes les traductions). Par contre je ne me servais ni de clean ni de purge.
    Pour aptitude vs apt-get je me servais d’apt-get parce que la documentation Ubuntu mentionne apt-get pour la plupart des commandes j’essaierai aptitude pour sa meilleure gestion des dépendances.
    Par contre si j’ai bien compris le principe j’ai plutôt intérêt à utiliser apt-get pour installer un paquet KDE dans un environnement XFCE pour ramener moins de dépendances ? Par exemple j’ai installé Kolourpaint sous Xubuntu,parce qu’il n’y a pas d’équivalent correct pour XFCE ou Gnome. Ais je eu raison de la faire avec apt-get pour ramener moins de dépendances qu’avec aptitude ou est ce que ça ne change rien ?
    J’attends l’articlesuivant. Juste une petite précision a propos de computer janitor : il n’est plus installé par défaut depuis ubuntu 11.10.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *