私のGentoo Linuxシステムで、パッケージマネージャー(Portage)によってインストールされなかったすべてのファイルのリストを取得したいのですが。これは、システムをできるだけクリーンに保ち、周りにある不要なファイルをすべて削除したいためです。
私が今までに試したことをお話ししましょう。まず、Portageが追跡するパッケージに属するすべてのファイルのリストを生成します。
equery files "*" | sort | uniq > portage.txt
次に、システム上のすべてのファイルのリストを生成します。ただし、気にしないものを除きます。
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
最後に、Portageによって追跡されていないすべてのファイルのリストを取得します。
comm -13 portage.txt all.txt > extra.txt
いくつかの統計:
wc -l portage.txt all.txt extra.txt
127724 portage.txt
78371 all.txt
8438 extra.txt
ご覧のように、私はまだ8千を超える余分なファイルを取得しています。本当に削除する必要のあるファイルにより焦点を当てるために、この数を減らしたいと思います。
私は中にいることに気づいたextra.txt
ようなディレクトリの数が少ない内のファイルの数千人が、そこにある/usr/lib64/gcc
、/usr/lib64/python2.7
と/usr/lib64/python3.2
。/usr/lib64/gcc/x86_64-pc-linux-gnu/4.6.3/crtbegin.o
ファイルは、例えば、ではないportage.txt
ので、その場所に、そこにあります/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/crtbegin.o
。私のシステムに/usr/lib
はへのシンボリックリンクがあり/usr/lib64
ます。したがって、より良い結果を得るには、シンボリックリンクを適切に処理する必要があるようです。おそらく、portage.txt
それらが指すすべてのファイルを追加することによって。どうすればいいのか分かりません。
また、なぜportage.txt
より大きいall.txt
ですか?Portageによって追跡されるファイルは私のシステム内のすべてのファイルのサブセットであるため、反対であってはなりませんか?
最後に、find
コマンドから除外する必要がある他の場所を忘れてしまいましたか?