パッケージが利用できない場合、yumはエラーになるはずです


14

私は最近、次のことをしようとしたスクリプトのバグに遭遇しました。

yum -y install another_package.x86_64 some_package.x86_64 && run_my_script

スクリプトは新しいCentOSで正常に動作しましたが、Cent OS 5でスクリプトを実行しようsome_package.x86_64としても利用できませんでした。しかし、エラーを出して停止する代わりに、次yumのメッセージを出力します。

No package some_package.x86_64 available.

yumスクリプトをより堅牢にするために、このような状況(デフォルトではIMO)でエラーを強制するにはどうすればよいですか?


スクリプトをより強力に構築し、続行する前にyumの戻り値を確認します。
frlan

1
@frlanそれが問題です。この場合、yum喜んで戻ります0。私のスクリプトは、先に進む前に既に戻り値をチェックしています。注意してください&&
pmr

回答:


11

お気づきのとおり、この動作はRHEL 5と6の間で変更されました(議論についてはhttps://bugzilla.redhat.com/show_bug.cgi?id=736694を参照してください)。そのリンクから、の戻りコードを確認すると、yum info <pkg>必要に応じてスクリプトを中止できます。何かのようなもの:

# Set a variable containing the packages to install:
pkgs_to_install='another_package.x86_64 some_package.x86_64'

# Loop over the packages in the list:
for pkg in ${pkgs_to_install}; do
  # Stop executing if at least one package isn't available:
  yum info ${pkg} >> /dev/null 2>&1 || exit
done

# Continue running your original script:
yum -y install ${pkgs_to_install} && run_my_script

3
わかりました。これは、これがデフォルトであると考えるのに夢中ではないことを助け、確認します。
pmr

2
うまくいきますが、現在のyumの動作はスクリプトの使用には非常に不親切です。
カラタ

13

パーバグ1274211、これはyumを-3.4.3-133.el7で修正されています。ただし、厳格モードを有効にする必要があります。

スクリプトを作成するためにこれを行う最も簡単な方法は、コマンドラインスイッチを使用することです。

yum -y --setopt=skip_missing_names_on_install=False install another_package.x86_64 some_package.x86_64 && run_my_script

ただし、次の設定オプションとして設定することもできますyum.conf

[main]
skip_missing_names_on_install=0
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.