インターネット接続があるかどうかを(Googleにpingして)確認し、呼び出すシェルスクリプトがあります
yum install packageA packageB --assumeyes
パッケージがインストールされている (または既にインストールされている) ことを確認するにはどうすればよいですか? 別の yum 呼び出しを行い、出力を解析しますか (システムが別の言語の場合、これは非常に複雑になると思います)。
私は次の方法を使用しましたが、これは絶対確実ではないかもしれませんが、うまくいくようです:
変数PACKAGES
にインストールするパッケージのリストが含まれていると仮定すると、次のようになります。
yum -y install $PACKAGES
(これがスクリプトの場合は、-y
プロンプトを表示しないようにするために本当に渡したいと思います)。rpm --query --queryformat "" $PACKAGES
は、正常にインストールされた各パッケージに対して何も出力せず、package <name> is not installed
失敗するたびに出力します。これは、URL、ファイル名、名前などを受け入れる他のものが含まれている場合ではなく、リポジトリで見つかると予想されるPACKAGES
プレーンなパッケージ名が含まれている場合にのみ機能します。yum
yum
Provides:
このランダムな投稿に基づくと、yumはエラーコードをシェルに返すようです。コマンドを実行してすぐに(次のコマンドとして)実行することで、これをテストできます。
echo $?
これにより、前のコマンドの戻りコードが出力されます。成功は0、ある種の失敗はゼロ以外でなければなりません。しかし、現時点ではボックスにアクセスできないため、これは単なる推測です。:)
pingを実行しても、接続しようとしているyumリポジトリが利用可能であるとは限りません。
パッケージがすでにインストールされているかどうかを確認するコマンド:-
yum list installed PACKAGE_NAME