
次のような状況のパッケージを探しています:
- 削除されたがパージされていない
- インストールされていますが、構成されていません
私は次のようなことを試しました
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
~installed
d文字通りに解釈されるdつまり、名前に文字が含まれるパッケージdaptitude
。 (私のシステム上の)のドキュメントを調べて、/usr/share/doc/aptitude/html/en/index.html
あなたの質問を満たす検索パターンを探しましたが、それが可能かどうかはわかりません。~action
半分は解決できるかもしれませんが、ステータスを取得できるかどうかもわかりません。
を使用する代わりに、をaptitude
使用することもできます。dpkg-query
grep
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 クエリ用。