dpkg-query
リンクされた投稿のように、そのようなスクリプトのコンテキストでAPTシステムに直接バインドするために、たとえば利用可能なPythonライブラリを使用することを除いて、仕事に最も適したツールのようです。
とdpkg-query
:
dpkg-query -Wf'${db:Status-abbrev}' package-name 2>/dev/null | grep -q '^i'
0
パッケージがインストールされている場合はtrue(シェルスクリプトの終了ステータス)を返し、1
そうでない場合はfalse(終了ステータス)を返します。
-W
「表示」を意味します(dpkg-query
要求されたアクションが必要です)。
-f
出力の形式を変更します。
db:Status-abbrev
パッケージステータスの短縮形です。
2>/dev/null
dpkg-query
無効なパッケージ名が指定された場合は無音になります。これをどのように処理すべきかは、ケース・ツー・ケースの問題である可能性があります。
grep -q
一致する場合はtrue、それ以外の場合はfalseを返します。
頻繁に使用する場合は、単純な関数にすることができます。
#!/bin/sh
debInst() {
dpkg-query -Wf'${db:Status-abbrev}' "$1" 2>/dev/null | grep -q '^i'
}
if debInst "$1"; then
printf 'Why yes, the package %s _is_ installed!\n' "$1"
else
printf 'I regret to inform you that the package %s is not currently installed.\n' "$1"
fi
または単に
#!/bin/sh
if dpkg-query -Wf'${db:Status-abbrev}' "$1" 2>/dev/null | grep -q '^i'; then
printf 'Why yes, the package "%s" _is_ installed!\n' "$1"
else
printf 'I regret to inform you that the package "%s" is not currently installed.\n' "$1"
fi
dpkg-query -l "$package" | grep -q ^.i
が、通常はそれで十分です(覚えやすい)。