aptitude でさまざまな状態のパッケージを検索する

aptitude でさまざまな状態のパッケージを検索する

次のような状況のパッケージを探しています:

  1. 削除されたがパージされていない
  2. インストールされていますが、構成されていません

私は次のようなことを試しました

aptitude search '~id'

そして

aptitude search "~iuA"

しかし、どちらも機能しませんでした。

何か案は?

更新 - コマンドの1つが機能しません -

[$] dpkg-query -Wf '${db:Status-Abbrev} ${Package}\n' | grep ^i[^i]

zsh: no matches found: ^i[^i]

zsh に問題があるのか​​、それとも他の何かが原因なのか、何か考えはありますか?

答え1

試みる際には、は「パッケージのステータスで次のフラグを探す」という意味ではないaptitudeことに注意することが重要です。は の省略形であり、その後~~i~installedd文字通りに解釈されるdつまり、名前に文字が含まれるパッケージdaptitude。 (私のシステム上の)のドキュメントを調べて、/usr/share/doc/aptitude/html/en/index.htmlあなたの質問を満たす検索パターンを探しましたが、それが可能かどうかはわかりません。~action半分は解決できるかもしれませんが、ステータスを取得できるかどうかもわかりません。


を使用する代わりに、をaptitude使用することもできます。dpkg-querygrep

dpkg-query -Wf '${db:Status-Abbrev} ${Package}\n' | grep ^r

これにより、削除された状態は残っていますが、削除されていません。

dpkg-query -Wf '${db:Status-Abbrev} ${Package}\n' | grep ^i[^i]

これにより、マークされたパッケージが検索されます。インストール済みですが、完全にはインストールされていません。トリガーで保留中のパッケージを含めたくない場合は、^i[ncHUF]代わりに を使用できます。


出力の 2 番目の列 (パッケージ名) のみを取得するには、次を使用しますsed

dpkg-query -Wf '${db:Status-Abbrev} ${Package}\n' | sed -n 's/^r.R\?\s*//p'

削除されたパッケージを見つけるには、

dpkg-query -Wf '${db:Status-Abbrev} ${Package}\n' | sed -n 's/^i[^i]R\?\s*//p'

インストールされるが完全にはインストールされていないパッケージを検索します。


これをもう少し詳しく説明すると、Debian パッケージの「ステータス」には 2 つの部分があります。

  • アクションパッケージに対して実行されることを意図しています。これは、インストールパッケージ、取り除くパッケージ、所有パッケージ、またはパージパッケージ。

  • パッケージステータスこれは、システム上のパッケージの実際の状態を説明します。

上記のdpkg-query呼び出しでは、各行の先頭のパッケージ名の前に、パッケージのアクションとステータスがそれぞれ 1 文字ずつリストされます。

削除されたがパージされていないパッケージを見つけるには、「削除」アクションを持つパッケージを検索するだけです。grep ^rインストールされている、またはインストールされる予定だがまだ構成されていないパッケージを見つけるには、アクションインストール、しかし、そのステータスはインストール済み: grep ^i[^i].

答え2

~c削除されたが完全には消去されていないのは( )です?config-files

インストールされているが構成されていないパッケージは、apt では追跡されず、dpkg によってのみ追跡されます。パッケージには、実際の状態と望ましい状態の 2 つの状態があります。apt は望ましい状態のみを考慮します。インストールされているが構成されていないパッケージの望ましい状態は、インストール済みです。

見るディラン・フレーズの回答dpkg クエリ用。

関連情報