Ich möchte eine Liste aller Dateien in meinem Gentoo Linux-System erhalten, die nicht vom Paketmanager (Portage) installiert wurden. Dies liegt daran, dass ich mein System so sauber wie möglich halten und alle nutzlosen Dateien entfernen möchte, die herumliegen.
Lassen Sie mich Ihnen sagen, was ich bis jetzt versucht habe. Zunächst generiere ich die Liste aller Dateien, die zu einem von Portage verfolgten Paket gehören:
equery files "*" | sort | uniq > portage.txt
Dann generiere ich die Liste aller Dateien auf meinem System, mit Ausnahme derjenigen, die mir egal sind:
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
Schließlich erhalte ich die Liste aller Dateien, die nicht von Portage verfolgt werden:
comm -13 portage.txt all.txt > extra.txt
Einige Statistiken:
wc -l portage.txt all.txt extra.txt
127724 portage.txt
78371 all.txt
8438 extra.txt
Wie Sie sehen, erhalte ich immer noch mehr als achttausend zusätzliche Dateien. Ich möchte diese Anzahl reduzieren, um mich mehr auf Dateien zu konzentrieren, die wirklich gelöscht werden müssen.
Ich bemerkte , dass in extra.txt
es gibt Tausende von Dateien in einer kleinen Anzahl von Verzeichnissen, wie /usr/lib64/gcc
, /usr/lib64/python2.7
und /usr/lib64/python3.2
. Die /usr/lib64/gcc/x86_64-pc-linux-gnu/4.6.3/crtbegin.o
Datei befindet sich beispielsweise nicht in, portage.txt
weil an ihrer Stelle vorhanden ist /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/crtbegin.o
. Auf meinem System /usr/lib
befindet sich ein Symlink zu /usr/lib64
. Es scheint also, dass ich mit Symlinks richtig umgehen muss, um bessere Ergebnisse zu erzielen. Vielleicht durch Hinzufügen portage.txt
aller Dateien, auf die sie verweisen. Ich weiß nicht wirklich, wie ich das machen soll.
Auch warum portage.txt
ist größer als all.txt
? Sollte nicht das Gegenteil sein, da von Portage verfolgte Dateien eine Teilmenge aller Dateien in meinem System sind?
Vergesse ich schließlich eine andere Stelle im find
Befehl, die ebenfalls ausgeschlossen werden sollte?