回答:
デフォルトから変更されたすべてのDebian管理設定ファイルを見つけるには、次のようなコマンドを使用できます。
dpkg-query -W -f='${Conffiles}\n' '*' | awk 'OFS=" "{print $2,$1}' | md5sum -c 2>/dev/null | awk -F': ' '$2 !~ /OK/{print $1}'
編集(ローカライズされたシステムで動作):
dpkg-query -W -f='${Conffiles}\n' '*' | awk 'OFS=" "{print $2,$1}' | LANG=C md5sum -c 2>/dev/null | awk -F': ' '$2 !~ /OK/{print $1}' | sort | less
編集(ファイル名にOKを含むパッケージを使用):
dpkg-query -W -f='${Conffiles}\n' '*' | awk 'OFS=" "{print $2,$1}' | LANG=C md5sum -c 2>/dev/null | awk -F': ' '$2 !~ /OK$/{print $1}' | sort | less
md5sum --quiet
ただし、OKファイルのフィルタリングを回避するために使用できますawk
(ローカライズの問題は?)。ちなみに、/ etc内に追跡されていないファイルを含める方法がわかりませんか?たとえば、/ etc / apache2 / sites-availableにあるようなものですか?
debsums -ec
)が実際にどのように機能するかを知るのは面白いでしょう。
debsums -ec
を使用してパッケージのバージョンを復元すると、この方法でリストされたファイルの一部は変更されません。
からman debsums
:
debsums -ce
List changed configuration files.
necroには申し訳ありませんが、@ naught101の回答は変更されたファイルに対しては正しいものの、追加されたファイルには役立ちませんでした。@Graemeのソリューションは優れていますが、etckeeperに依存しています。ファイルシステムを変更したくありません。
find /etc -type f | grep -vFf <(debsums -e -r /etc | sed 's/[[:space:]]*OK$//')
の/ etc /その内のファイル検索しdebsums
ないではないとして、有効なレポートを。これは、追跡されていないファイルまたは「OK」ではないファイル(ハッシュが一致しない)を意味します。
debsums --list-missing
、1つ以上のパッケージに含まれているファイルのチェックサムが欠落しているかどうかを確認するために実行する必要があります。現在、出力は空になっているはずです。
私は通常、すぐにシステム上でetckeeperをセットアップするのが好きです。etckeeperのようなものを使用すると、ファイルが異なるときだけでなく、実際にどのように違うのかを実際に確認できます。
見る:
これはやり過ぎかもしれませんが、誰かがetckeeperに言及していたので、調査中に、「事後」に物事を理解しようとする場合に役立つ他の宝石に出会ったことがあります。
http://devstructure.com/blueprint/
ブループリントは、サーバーをリバースエンジニアリングするシンプルな構成管理ツールです。手動で行ったことを把握し、Gitリポジトリにローカルに保存し、作業を再作成できるコードを生成し、それらの変更を運用環境に展開するのに役立ちます。
これは、変更されたものだけではなく、追加された構成ファイルも提供するという点で、元の質問とは少し異なります。debパッケージに含まれていないファイルもキャッチされますが。両方の動作が望ましい場合があります。
最初のコミット後に以前に変更したファイルを追加してコミットする場合にも機能するはずですが、理想的にはgit vcsでetc keeperを使用することに依存します。ここで注意すべき点は、Ubuntuはetckeeperを、etckeeper開発者が設定したgitのデフォルトではなく、デフォルトでBazaar(CanonicalスポンサーBazaar)を使用するように設定することです。
アイデアは、実行後に自動的に行われないすべてのコミットのリストを取得し、実行することです。次に、最初のコミット以外のすべてで変更されたファイルをリストします。
filter_sed="/committing changes in \/etc after apt run\$/d"
etckeeper vcs log --oneline |
sed "$filter_sed; \$d; s/ .*//" |
xargs etckeeper vcs show --name-only --format=format: |
sort |
uniq |
sed "/^\$/d"
フィルタ文字列は、他のコミットが一貫して名前が付けられている場合、他のコミットを包含するように拡張することもできます。debファイルまたはソースコードから直接インストールするのに適している場合があります。
これが私のために選んだ注目すべきファイルは私のものですxorg.conf
-あなたはそれを必要とするなら現在/ etc / X11にこれを追加しなければなりません。また、私のdefault/grub
変更が反映されます。これは、パッケージの一部としてリストされるのではなく、インストール後のスクリプトによって/ usr / shareからコピーされたようです。このようなファイルに変更が加えられた場合、dpkg関連のメソッドはそれを明らかにしません。
git log
今持っている--invert-grep
を使用せずに興味のないコミットをフィルタリングすることができますオプションをsed
。