私のシステムにはパッケージのリストがあり、それらは再びインストールおよび削除されましたが、パージされていません。つまり、まだ多くのconffileなどがあります。
dpkg --get-selections | grep deinstall
の出力には、約85種類のパッケージがリストされていますが、これらは完全に削除する必要はなく、完全に削除する必要があります。
それで、私が試した後に最終的に尋ねることにした私の短い質問は この問題 につながりました:
どのようにすれば完全に削除できますかpurgeすでに削除されている以前にインストールされたパッケージですか?
もちろん、再インストールしてからパージすることはオプションではありません。
私はちょうど働いた次のコマンドを見つけました:
Sudo apt-get purge $(dpkg -l | grep '^rc' | awk '{print $2}')
dpkg --get-selections | grep deinstall
は、単語「deinstall
」を含むパッケージ名のリストを生成します。
$ dpkg --get-selections | grep deinstall
account-plugin-windows-live deinstall
debarchiver deinstall
flashplugin-installer deinstall
...
awk
に最初のフィールドのみを印刷するように要求すると、次のようになります。
$ dpkg --get-selections | awk '$2 == "deinstall" {print $1}'
account-plugin-windows-live
debarchiver
flashplugin-installer
...
パッケージのリストができたので、xargs
を使用してパッケージのリストをコマンド(またはリストが十分に長い場合はコマンド)にフィードできます。
dpkg --get-selections | awk '$2 == "deinstall" {print $1}' | xargs Sudo apt-get purge --dry-run
シミュレーション結果に満足したら、--dry-run
コマンドからapt-get
を削除します。
読む:
for i in awk xargs apt-get ; do
man $i
done
リスト全体を削除する場合は、このコマンドを使用できます。必須のパッケージが削除される場合に備えて、ドライランを実行します。
dpkg --get-selections | sed -n 's/\tdeinstall$//p' | xargs Sudo apt-get --dry-run purge
必須のパッケージが削除されない場合、実際のコマンドを実行しても安全です。
dpkg --get-selections | sed -n 's/\tdeinstall$//p' | xargs Sudo apt-get --yes purge
sed -n 's/\tdeinstall$//p'
:stdin
の行のみを出力します。行の最後からdeinstall
文字列が続く表を削除できます。これは、実際の集計に続いて行末にdeinstall
文字列が続くことなく、行末にdeinstall
文字列が続く集計を含む行のみを印刷する効果があります。xargs Sudo apt-get --yes purge
:stdin
の各行をSudo apt-get --yes purge
の引数として渡します私の50セント、シンプルなワンライナー:
最初のテスト with
dpkg --get-selections | awk '$2=="deinstall" {system("Sudo apt-get --dry-run purge "$1)}'
そしてさようなら
dpkg --get-selections | awk '$2=="deinstall" {system("Sudo apt-get -y purge "$1)}'
例
% dpkg --get-selections | grep deinstall
nginx-common deinstall
% dpkg --get-selections | awk '$2=="deinstall" {system("Sudo apt-get -y purge "$1)}'
% dpkg --get-selections | grep deinstall
[no output]
私はこれを数日前に自分で尋ねました。思い付いた
apt-get purge $(dpkg -l | awk 'BEGIN{ORS=" "} /^rc/{ print $2}')
削除されたが削除されていないパッケージは、dpkg -l
の出力に表示され、先頭にrc
が付きます。 awk
は、2番目の列(パッケージの名前)を選択し、スペースで区切って出力します。