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 :

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.

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…