パッケージマネージャ(Portage)によってインストールされていないGentoo Linuxシステムのすべてのファイルのリストを取得したいと思います。周囲の不要なファイルをすべて削除してシステムをできるだけクリーンにしたいからです。
これまで私が試したことを申し上げます。まず、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,000を超える追加ファイルがあります。実際に削除する必要があるファイルに集中するために、この数を減らしたいと思います。
、およびなど、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
最後に、コマンドから除外する必要がある他の場所を忘れましたか?
ベストアンサー1
あなたが探しているものはqfile
。パッケージの一部であり、オプションapp-portage/portage-utils
を提供します。次のようなものを使用できます-o
--orphans
find /usr/bin -type f | xargs -I{} qfile -o {}
から孤立したファイルのリストを取得します/usr/bin
。
注:残念ながら、qfile
現在の安定版portage-utilsではstdinでの読み込みはサポートされておらず、qfileのマニュアルページに記載されている解決策はルックアップ結果qfile -o $(find /usr/bin)
セットが大きい場合は機能しないため、これを解決する必要があります。クリックして使用してくださいxargs
。
ところで、私はこれを自分で考えていませんでした。ヘアスプリングスレッド, yvasilevの口コミ。