1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Debian系のディストリビューションでパッケージがインストールされているか調べたい

Posted at

目視確認の場合

人間がコンソールで目視確認する場合、普通は以下の通りにdpkg-queryコマンドを使うと思います。

dpkg-query -l パッケージ名

例えばこんな感じ。

 % dpkg-query -l git
要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)保持
| 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)トリガ待ち/(T)トリガ保留
|/ エラー?=(空欄)無/(R)要再インストール (状態,エラーの大文字=異常)
||/ 名前           バージョン   アーキテクチ 説明
+++-==============-============-============-=================================
ii  git            1:1.9.1-1ubu amd64        fast, scalable, distributed revis

パッケージ名の左側に書かれた文字「ii」は、ヘッダ部の説明の通り「インストール要求されて、無事にインストールが終わっている」という意味です。

スクリプトから使いたい場合

でも、シェルスクリプトで上記の表示結果をそのまま扱うのはいささか面倒です。表示されるパッケージが1種類ならtailコマンドで切り出すことは容易ですが、複数行あると意外と面倒です。

こんなときは、以下のdpkg-queryコマンドを試してみましょう。

dpkg -W -f='表示フォーマット' パッケージ名

「表示フォーマット」で表示できる情報については、man dpkg-query見ると載っていますので割愛します。
この表示フォーマットのおかげで、文字列加工が大変楽です。

例えば、あるパッケージがインストールされているかどうか確認したい場合、以下のようにすれば良いと思われます。
なお、${Status}はシェル変数でなく、表示フォーマットの一つで「パッケージの状態」を示します。

% dpkg-query -W -f='${Status}\n' chromium-browser | awk '{print $3}'
not-installed

% dpkg-query -W -f='${Status}\n' git | awk '{print $3}'
installed

これで、スクリプト書くのが楽になります。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?