web-dev-qa-db-ja.com

以前に削除したパッケージのみをパージする方法は?

私のシステムにはパッケージのリストがあり、それらは再びインストールおよび削除されましたが、パージされていません。つまり、まだ多くのconffileなどがあります。

dpkg --get-selections | grep deinstallの出力には、約85種類のパッケージがリストされていますが、これらは完全に削除する必要はなく、完全に削除する必要があります。

それで、私が試した後に最終的に尋ねることにした私の短い質問は この問題 につながりました:

どのようにすれば完全に削除できますかpurgeすでに削除されている以前にインストールされたパッケージですか?

もちろん、再インストールしてからパージすることはオプションではありません。

17
Byte Commander

私はちょうど働いた次のコマンドを見つけました:

Sudo apt-get purge $(dpkg -l | grep '^rc' | awk '{print $2}')
26
Byte Commander

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
15
waltinator

リスト全体を削除する場合は、このコマンドを使用できます。必須のパッケージが削除される場合に備えて、ドライランを実行します。

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 purgestdinの各行をSudo apt-get --yes purgeの引数として渡します
3
kos

私の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]
2
A.B.

私はこれを数日前に自分で尋ねました。思い付いた

apt-get purge $(dpkg -l | awk 'BEGIN{ORS=" "} /^rc/{ print $2}')

削除されたが削除されていないパッケージは、dpkg -lの出力に表示され、先頭にrcが付きます。 awkは、2番目の列(パッケージの名前)を選択し、スペースで区切って出力します。

1
Nephente