web-dev-qa-db-ja.com

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

最近、スクリプトのバグに遭遇し、次のことを試みました。

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.

このような状況(どのIMOがデフォルトである必要があります)でyumを強制的にエラーにして、スクリプトをより堅牢にすることができますか?

14
pmr

ご存知のように、この動作は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
11
mvermaes

Bug 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