多くのファイルは、パッケージによってファイルシステムにインストールされます。
これは、プロジェクトで私が内部で使用されるカスタムメイドの画像を更新するのに役立ちます。また、自宅で再インストールするときに、自分がやったことを忘れてしまいました。もちろん、最も興味深いのはホームディレクトリの外ですが、たとえばホーム内のドット構成ファイルの変更も興味深いものです。
あなたの質問に文字通り答えるために、この方法でパッケージから来ていないファイルをリストすることができます:
find / -xdev -type f | sort >/tmp/root.files
sort /var/lib/dpkg/info/*.list >/tmp/installed.files
comm -23 /tmp/root.files /tmp/installed.files
もちろん、ホームディレクトリ内のすべてのファイルが含まれます。 -Prune
ディレクティブを追加することで、find
コマンドでいくつかのディレクトリをスキップできます(アクションが存在しない場合にのみ-print
アクションが暗示されるため、残りを印刷するには-print
も追加する必要があります)。
find / -xdev -type f -path /home -Prune -o -path /var -Prune -o -print | sort >/tmp/root.files
ファイルが変更されたかどうかを確認するには、そのチェックサムを/var/lib/dpkg/info/$PACKAGE.md5sum
のチェックサムと比較できます。すべてのファイルを比較する場合(非常に時間がかかります):
for p in /var/lib/dpkg/info/*.list; do
diff <(md5sum $(cat $p) | sort) <(sort ${p#.list}.md5sums);
done
パッケージに由来するファイルを変更するべきではないため、これは必要ありません。また、システムディレクトリに独自のファイルを追加しないでください。
構成ファイルを変更すると、/etc
に置かれます。これは、システムファイルを変更する必要がある唯一の場所です。 etckeeper パッケージをインストールして、/etc
の変更を追跡します。 Sudo etckeeper init
を実行すると、/etc
がバージョン管理されます(デフォルトでは Bazaar )。
システム全体にソフトウェアをインストールする場合は、/usr/local
の下にインストールしてください。 /bin
、/sbin
、/lib
(異常なハードウェアがあるために手動でインストールされたカーネルモジュールを除く)、または/usr
(自分用の/usr/local
を除く)には触れないでください。
ホームディレクトリ内のすべてのファイルは、あなたが作成したものです(アカウントの作成時に/etc/skel
からコピーされた一握りを除く)。どのオプションがアプリケーションのデフォルトで、どのオプションが設定オプションを選択した結果であり、どのオプションが現在の状態(開いているファイル、コマンド履歴など)を記録するかを追跡する一般的な方法はありません。
2番目のポイントでは、debsums -ac
(同じ名前のパッケージから)を使用して、変更されたすべてのパッケージファイル(構成ファイルを含む)を一覧表示できます。