Gentoo cleaning
Je continue de migrer les pages du wiki. Celle la avait été pondue par Trapamoosch, merci à lui :-)
Avec le temps, il n’est pas rare de voir sa Gentoo s’encrasser : paquets inutiles, dépendances inutiles, fichier world contenant des entrées invalides… Un bon coup de ménage s’impose !
- Prérequis
Quelques outils sont nécessaires pour faire un bon nettoyage : gentoolkit et le script dep.
emerge -av app-portage/gentoolkit app-portage/udept
Vous devez aussi, par sécurité, faire une copie de secours de votre fichier world :
cp /var/cache/edb/world /var/cache/edb/world.bak
ou (pour Portage à partir de la version 2.0.51)
cp /var/lib/portage/world /var/lib/portage/world.bak
Pour gagner du temps, revoyez vos flags USE dès cette étape, cela vous évitera trop de recompilations plus tard.
De même, désinstallez tous les softs dont vous ne voulez plus dès maintenant.
- Nettoyage du fichier world
Le fichier world (/var/cache/edb/world
ou /var/lib/portage/world
à partir de Portage 2.0.51) recense tous les paquets que l’utilisateur à volontairement installé, sans les dépendances (qui sont, elles, toujours calculées à la volée par emerge). Or, il n’est pas rare de recompiler un paquet soi-même en tapant juste emerge le-paquet. Imaginez que vous compiliez un paquet A qui dépend d’un autre paquet B. La compilation de B échoue, pour une raison quelconque, vous arrangez ça et pour tester, vous lancer la commande : emerge B
Erreur ! Désormais, B ne sera plus considéré par emerge comme une dépendance mais bien comme un paquet à part entière que les scripts de nettoyage omettront alors de « nettoyer ».
Dans notre cas, il aurait fallu taper emerge --oneshot B
, qui compile et installe le paquet mais sans l’inscrire dans le fichier world. Utlisez cette option pour toute recompilation de dépendances !
Utiliser un utilitaire comme regenworld (qui permet de reconstruire le fichier world s’il a été altéré ou détruit) peut aussi conduire à un fichier world contenant des redondances.
La première étape du nettoyage va donc consister à nettoyer le fichiers world pour en retirer toutes les dépendances qui n’ont rien à faire là et qu’emerge peut très bien recalculer tout seul. Dans ce cas, on considèrera donc comme entrée inutile tout paquet qui a au moins une dépendance sur lui. Le script dep fait cela relativement bien : dep -pw
– Utilisez toujours dep avec parcimonie, et toujours avec l’option -p (pretend)
– dep est assez efficace, mais très lent. Soyez patients !
dep va alors lister tous les paquets inscrits dans votre fichier world, et vous indiquer ceux qu’il estime être redondants. Ils vous suffit ensuite de les retirer de votre fichier world, toujours en vérifiant bien que ce n’est pas un paquet que vous n’aimeriez pas voir être désinstallé sans votre avis.
Exemple :
Vous installez un paquet A volontairement.
Vous installez un paquet B volontairement et qui dépend de A.
dep va considérer A comme redondant car il y a un paquet qui le considère comme dépendance (paquet B), alors que vous l’avez réellement voulu.
C’est le point faible qui fait que l’on ne peut pas laisser un nettoyeur de fichier world travailler automatiquement.
- Désinstallation des paquets inutile
Les dépendances inutiles:
Une fois le fichier world propre, il est temps de retirer toutes les dépendances inutiles. On définit une dépendance inutile comme un paquet installé non inscrit dans le fichier world et sur lequel aucun autre paquet n’a de dépendance. Pour cela, très simple et toujours avec le script dep : dep -ps
dep est plus stable et surtout plus fiable que l’option –depclean d’emerge. Peut-être cela changera-t-il dans les prochaines versions de Portage.
Les slots inutiles:
Certaines librairies, comme gtk+ ou qt, utilisent le système de slot qui permet de faire cohabiter plusieurs versions en même temps. Avec le temps, certaines versions deviennent inutiles. Pour retrouver les paquets « slottés » inutiles, toujours dep : dep -pP
Dans les deux étapes précédentes, analysez bien la liste des paquets proposés pour la suppression afin de ne pas retirer des paquets voulus. Une fois ceci fait, désinstallez-les.
- Fiabilisation du système
Dans tous les cas, si vous désinstallez beaucoup de paquets d’un coup, il faut contrôler que vous n’avez pas cassé de dépendances : emerge -NDua world && revdep-rebuild -a
Cela permettra de recompiler tous les paquets qui ont été touchés de près ou de loin par le remaniement du système. Une fois ceci fait, votre système doit être stable et sans problème.
- Quelques gains de place
Vous pouvez nettoyer votre dossier /usr/portage/distfiles
avec eclean. Cet outil permet de retirer toutes les archives de sources qui n’ont plus d’intérêt. Il garde toutes les archives des paquets installés, pour que vous n’ayez pas à les retélécharger au cas où vous voudriez les recompiler. eclean -d distfiles && eclean -d packages
Pensez que lorsque emerge désinstalle les sources d’un kernel, il ne retire pas tout. Pensez à nettoyer votre /usr/src
pour retirer tous les dossiers inutiles des versions de kernels que vous avez désinstallées.
Vous pouvez aussi nettoyer le dossier /lib/modules
pour retirer tous les modules des versions de kernels que vous avez désinstallés.
Il peut être utile également de vider de temps en temps les dossiers temporaires comme /tmp
et /var/tmp
.