mysql、phpmyadminなどを使用してApacheサーバーを設定するためのいくつかのアプリケーションを構築しているため、インストールが存在することを確認するコマンドが必要ですapache2
。たとえば、次のようになります。
- パッケージがインストールされていること、アップデートがあることを確認する必要があります
- 新しい/バージョンパッケージの自動インストール
- インストールが成功したかどうかを返します。
私はLinuxの専門家ではありませんが、これまでに次のような情報を得ました。
apache2 -v || {
sudo apt install apache2 && {
echo 'INSTALL_SUCCESS'
exit -1
}
}
echo 'NOT FOUND'
しかし、正直なところ、ここで何が起こっているのかわかりませんが、インストールがまだ実行されていることを知っており、この問題を解決するより良い方法があります。
答え1
一般的に言えば、明示的な同意なしにユーザーシステムにソフトウェアをインストールするのは良い考えではなく、ソフトウェアを自動的にアップグレードするのも良い考えではありません。時には、管理者が正当で価値のある理由で特定のバージョンを固定することがあります。さらに、過度のダウンタイムを防ぐために、特定の静かな時間の間に更新を実行する必要があるかもしれません。
プログラムに依存関係が必要な場合は、それをシステムパッケージ形式(この場合はDEB)にパッケージ化し、プログラムに必要なソフトウェアの依存関係を宣言する必要があります。たとえば、Apacheを設定する必要がある場合は、これを正しく宣言すると、apache2
管理者は必要な依存関係を確認し、ソフトウェアをインストールするかどうかを選択し、すべての更新を便利な方法で一度に管理できます。パッケージが必要ない場合は、推奨依存関係などのオプションの依存関係を宣言できます。
apache2
たとえば、システムにバイナリがあるかどうかを知る必要がある場合は、POSIXで尋ねる方法はですcommand -v apache2
。これは移植可能で、システム全体で動作し、バイナリを呼び出すことはありません。
特定のパッケージがDebianまたはUbuntuシステムにインストールされているかどうかを知りたい場合は、正しいコマンド(この場合dpkg
)は次のようになります。
$ dpkg-query -W -f '${db:Status-Abbrev}\n' dpkg | grep -qsE '^.i'
パッケージがインストールされている場合は0を返し、そうでない場合は1を返します。