我最近在尝试执行以下操作时遇到了脚本中的错误:
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
在这种情况下(在我看来这应该是默认情况)我怎样才能强制出错以使我的脚本更加健壮?
答案1
正如您所发现的,这种行为在 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
答案2
每错误 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