Je voudrais obtenir une liste de tous les fichiers de mon système Gentoo Linux qui n'ont pas été installés par le gestionnaire de paquets (Portage). C'est parce que je veux garder mon système aussi propre que possible, en supprimant tous les fichiers inutiles qui traînent.
Permettez-moi de vous dire ce que j'ai essayé jusqu'à présent. Tout d'abord, je génère la liste de tous les fichiers appartenant à un paquet suivi par Portage:
equery files "*" | sort | uniq > portage.txt
Ensuite, je génère la liste de tous les fichiers sur mon système, à l'exception de ceux dont je ne me soucie pas:
find / \( -path /dev -o -path /proc -o -path /sys -o -path /media \
-o -path /mnt -o -path /usr/portage -o -path /var/db/pkg \
-o -path /var/www/localhost/htdocs -o -path /lib64/modules \
-o -path /usr/src -o -path /var/cache -o -path /home \
-o -path /root -o -path /run -o -path /var/run -o -path /var/tmp \
-o -path /var/log -o -path /tmp -o -path /etc/config-archive \
-o -path /usr/local/portage -o -path /boot \) -prune \
-o -type f | sort | uniq > all.txt
Enfin, j'obtiens la liste de tous les fichiers qui ne sont pas suivis par Portage:
comm -13 portage.txt all.txt > extra.txt
Quelques statistiques:
wc -l portage.txt all.txt extra.txt
127724 portage.txt
78371 all.txt
8438 extra.txt
Comme vous pouvez le voir, je reçois encore plus de huit mille fichiers supplémentaires. Je voudrais réduire ce nombre, afin de me concentrer davantage sur les fichiers qui doivent vraiment être supprimés.
J'ai remarqué qu'il extra.txt
y a des milliers de fichiers dans un petit nombre de répertoires, tels que /usr/lib64/gcc
, /usr/lib64/python2.7
et /usr/lib64/python3.2
. Le /usr/lib64/gcc/x86_64-pc-linux-gnu/4.6.3/crtbegin.o
fichier, par exemple, n'est pas portage.txt
dedans car, à sa place, il y en a /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/crtbegin.o
. Sur mon système /usr/lib
est un lien symbolique vers /usr/lib64
. Il semble donc que je dois gérer correctement les liens symboliques pour obtenir de meilleurs résultats. Peut-être en ajoutant portage.txt
tous les fichiers vers lesquels ils pointent. Je ne sais pas vraiment comment faire ça.
Aussi, pourquoi portage.txt
est-il plus grand que all.txt
? Cela ne devrait pas être le contraire puisque les fichiers suivis par Portage sont un sous-ensemble de tous les fichiers de mon système?
Enfin, est-ce que j'oublie tout autre emplacement de la find
commande qui devrait également être exclu?