10

インターネット接続があるかどうかを(Googleにpingして)確認し、呼び出すシェルスクリプトがあります

yum install packageA packageB --assumeyes

パッケージがインストールされている (または既にインストールされている) ことを確認するにはどうすればよいですか? 別の yum 呼び出しを行い、出力を解析しますか (システムが別の言語の場合、これは非常に複雑になると思います)。

4

3 に答える 3

13

私は次の方法を使用しましたが、これは絶対確実ではないかもしれませんが、うまくいくようです:

変数PACKAGESにインストールするパッケージのリストが含まれていると仮定すると、次のようになります。

  1. 実行しますyum -y install $PACKAGES(これがスクリプトの場合は、-yプロンプトを表示しないようにするために本当に渡したいと思います)。
  2. いくつかの障害状態を検出するために、その終了ステータスを確認してください。
  3. Runrpm --query --queryformat "" $PACKAGESは、正常にインストールされた各パッケージに対して何も出力せず、package <name> is not installed失敗するたびに出力します。
  4. 正常にインストールされなかったパッケージの数のように見える終了ステータスを確認してください。つまり、正常にインストールされた場合は通常どおり 0 になります。

これは、URL、ファイル名、名前などを受け入れる他のものが含まれている場合ではなく、リポジトリで見つかると予想されるPACKAGESプレーンなパッケージ名が含まれている場合にのみ機能します。yumyumProvides:

于 2014-03-13T23:22:28.830 に答える
8

このランダムな投稿に基づくと、yumはエラーコードをシェルに返すようです。コマンドを実行してすぐに(次のコマンドとして)実行することで、これをテストできます。

echo $?

これにより、前のコマンドの戻りコードが出力されます。成功は0、ある種の失敗はゼロ以外でなければなりません。しかし、現時点ではボックスにアクセスできないため、これは単なる推測です。:)

于 2011-12-09T14:51:16.007 に答える
6

pingを実行しても、接続しようとしているyumリポジトリが利用可能であるとは限りません。

パッケージがすでにインストールされているかどうかを確認するコマンド:-

yum list installed PACKAGE_NAME
于 2011-12-09T16:03:36.907 に答える