dpkgによってインストールまたは作成されていないDebianシステム内のファイルを見つける方法


20

過去に手動でいくつかのものをインストールしましたが、関連するすべてのファイルを除外したいと思います。そのため、Debianシステムに現在インストールされているパッケージのいずれにも含まれていないすべてのファイル(たとえば/ usr内)を自動的に見つける方法が必要です。ただし、パッケージのインストール中に作成されるファイルをフィルターで除外する必要もあります(dpkgポストインストールスクリプトなどによって)。


1
また、この質問を参照してください:unix.stackexchange.com/questions/18038/...を
タハジャハーンギール

回答:


25

cruftパッケージを使用します。

cruftは、システムにあるべきではないものを探すプログラムです。またはそこにあるべきだが、そうではないもののために。


4

次のようなものを試すことができます:

dpkg -L --list-all-package-files | grep "^/usr" > dpkg-files.dat   **(don't know the dpkg option "--list-all-package-files", read mand dpkg)**
find /usr -type f -o -type l > all-usr-files.dat
sort dpkg-files.dat all-usr-files.dat | uniq -c | grep " 1 "

この方法では、パッケージファイルではなく、/ usrにあるすべてのファイルを取得します。最初のショットとして、これはあなたを助けることができます。


-Lを取得して一度に複数のパッケージをリストする方法はありませんが、同じ効果を得ることができますgrep -h "^/usr" /var/lib/dpkg/info/*.list > dpkg-files.dat
-DerfK

--list-all-package-filesオプションはありません。
カロル

@DerfK:あなたはこのような例のために、より多くの一つのパッケージよりも、リストに-l得ることができます:dpkg -L `aptitude search ~i -F "%p"`
カロル

このアプローチの問題は、dpkgによって実際にリストされるよりも多くのファイルまたはリンクが/ usrにあることです。たとえば、おそらくインストール後のスクリプトによって作成された/ usr / bin / aptitudeが存在しますが、dpkgにはリストされていません。だから、ここで欲しいのは、パッケージをインストールすることでインストールまたは作成されたファイルのリストだと思います(質問が変わります)。
カロル

@Karol:ファイルの他のソースは、迂回と代替です。出力は文形式ですがdpkg-divert --list、ルートとしての迂回を見ることができます(通常、接尾辞が付けられます)。代替手段は少し難しく、/ var / lib / dpkg / alternatives /のファイル形式は扱いにくいupdate-alternativesため、リンクの名前を除いてすべてのことを教えてくれます。find /usr -lname '/etc/alternatives/*'おそらくこれらを取得する最も簡単な方法です。
DerfK
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.