どのパッケージにも「所有」されていない自分のコンピューター上のファイルのリストを取得するにはどうすればよいですか?


9

私はこれを行うスクリプトを書くことを考えています:

  • / usr / lib内の各ファイルを調べます
  • dpkg -s、各ファイルの検索を。
  • どの.debパッケージにも属していない「孤立した」ファイルのリストを報告します。

アイデアは、時間の経過とともに、多くのmake installソフトウェアをインストールしてきたため、手動でインストールしたソフトウェアから残っているファイルのリストを取得したいということです。


将来的には、パッケージングシステムの外部にインストールするすべてのものが/ usr / localまたは/ optにインストールされることを確認してください。次に、明確な分離があります。
geirha

回答:


8
find /usr/lib -type f -exec dpkg -S {} + 2>&1 >/dev/null | sed -r 's/^[^/]+//'

警告します。遅いです。


3
それは高速です:find /usr/lib -type f -exec dpkg -S {} + | grep 'no path found'
αғsнιη

1
そこに不一致はありません。2012年のOliは2015年のOliほど良くありませんでした。ファイルのリストのみを返すように更新しました。
Oli

3

次のコマンドを実行できます

join -t '' -v1 <(find /usr/lib | sort) \
               <(grep -h /usr/lib /var/lib/dpkg/info/*.list | sort -u)

内のファイル/usr/libのリストを、少なくとも内の1つのファイル/var/lib/dpkg/info/<NAME>.list(が使用するファイル)に存在するファイルのリストと比較しますdpkg -S。この-v1オプションは、最初のリストには存在するが2番目のリストには存在しないファイルを報告します。

私のマシンでは、この差分リストは5000以上のヒットを与えるので、それが何らかの助けになるとは思えません。


私にとっては本当に速く動作します。
user1202136 2014年

2
sudo aptitude install cruft
man cruft
sudo addgroup cruft
sudo chmod g+rwx /var/spool/cruft
sudo chown root:cruft /var/spool/cruft
sudo addgroup $USER cruft
cruft -r cruftreport
sudo chown root:root /var/spool/cruft
less cruftreport

1
以下のようなI man cruftそこではなく、嫌なもののほんの少しの詳細な説明とは、なぜあなたはそれがいいだろうお勧めします!:P ;-)
Fabby 2015年

これは、より正確には機能しません。(1)「chown: 'root:cruft'の後にオペランドがありません」。書く必要があります: "sudo chown root:cruft / var / spool / cruft"代わりに(2) "sudo addgroup $ USER cruft"は新しいシェルを閉じる/開く必要があります(再ログイン)。(3)すべてのディレクトリを検査する場合は、cruftを呼び出すには「sudo cruft」が必要です。
ムエナラン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.