目視確認の場合
人間がコンソールで目視確認する場合、普通は以下の通りに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
これで、スクリプト書くのが楽になります。