web-dev-qa-db-ja.com

apt-get purgeコマンドはどのように機能しますか?

'it'(つまりpurge)は、依存関係ファイルと構成ファイルの場所をどのようにして知るのですか?

purgeは、特定のソフトウェアが特定のファイルを作成したことをどのようにして検出しますか?

purgeがレコードにアクセスして、削除中にファイルをプログラムに一致させるために、プログラムによるすべてのファイルの作成を記録する何らかの構成ファイルがありますか?

7
TellMeWhy

はい、そのようなファイルがあります。特に、*.list*.postrm、および*.conffilesは、すべて/var/lib/dpkg/infoディレクトリに保存されます。

.postrmファイルは、パッケージが削除された後に実行される削除後スクリプトです。これらのスクリプトはパッケージメンテナーの責任であり、各スクリプトは特定のパッケージに合わせて調整されます。たとえば/var/lib/dpkg/info/usb-modeswitch-data.postrmを調べると、次のように表示されます。

#!/bin/sh
set -e
# Automatically added by dh_installdeb
dpkg-maintscript-helper rm_conffile "/etc/usb_modeswitch.d/230d:0001" 20101222-3 -- "$@"
# End automatically added section

基本的にリストである*.listおよび*.conffilesファイルもあります。たとえば、gnome-terminal.listは、gnome-terminalがインストールされたときに作成されたすべてのファイルとディレクトリをリストします。 *.listファイルは、何が何をインストールしたかを判断するのに非常に役立ちます。 *.conffilesは、パッケージのすべての構成ファイルをリストします。たとえば、xterm.listallファイルを提供しますが、 `xterm.conffiles *はconffilesのみを提供します。つまり、conffileの内容もリストファイルに存在します。

$ cat /var/lib/dpkg/info/xterm.conffiles                                       
/etc/X11/app-defaults/XTerm
/etc/X11/app-defaults/KOI8RXTerm-color
/etc/X11/app-defaults/XTerm-color
/etc/X11/app-defaults/UXTerm-color
/etc/X11/app-defaults/UXTerm
/etc/X11/app-defaults/KOI8RXTerm

*.conffilesがどのように機能するのかよくわかりません。私の想定では、削除後のスクリプトが優先され、apt-getはそれらの*.conffilesを使用して、そこにリストされているファイルが削除されたことを再確認します。

@ A.Bとして適切に思い出させてくれました。*.prermファイルもあります。そのいくつかは.confファイルを削除しますが、必ずしもそうではありません。たとえば、xpdf appのファイルは/etc/xpdf/includesディレクトリ

2