インストールされた Debian パッケージのテストスクリプトの作成 - エラー処理?

インストールされた Debian パッケージのテストスクリプトの作成 - エラー処理?

インストールしている Debian パッケージのテストスクリプトを作成したいと思います。

一致するパッケージがない場合をdpkg-query使用して検索すると、エラーが返されます。しかし、これを具体的に検出し、他のエラー(リソースの消耗など)が発生した場合、中断したい場合はどうすればよいかわかりません。

ベストアンサー1

dpkg-query実際にこれを行うオプションがあり、その終了コードはユースケースをサポートしています。

-s--status package-name...

指定されたパッケージの状態を報告します。インストールされたパッケージのステータスデータベースにあるエントリのみが表示されます。複数の項目がリストされている場合、 package-name 要求された状況項目はパラメーター・リストで指定された順序と同じ順序で空行に分割されます。

(参考までに次のようになります。インストール済みパッケージ状態データベースがインストールされていない項目を報告できないようにします。これはユーザーが求めているものです。

終了ステータス

0:要求されたクエリが正常に実行されました。

1:ファイルやパッケージが見つからないため、要求されたクエリは完全にまたは部分的に失敗しました(例外--control-path--control-listこれらの--control-showエラーは致命的です)。

2:誤ったコマンドラインの使用やシステムとのやり取り(データベースアクセス、メモリ割り当てなど)によって発生した致命的または回復不能なエラー。

(Debian 8に含まれているマンページにはこれについて言及していませんが、dpkg-query実際にはDebian 8でもこの動作が発生します。)

そのように

#!/bin/sh

dpkg-query -s package > /dev/null 2>&1
case $? in
0)
    echo $1 is installed
    ;;
1)
    echo $1 is not installed
    ;;
2)
    echo An error occurred
    ;;
esac

(関数になるもの)は私が理解したものと一致します。

おすすめ記事