当软件包不可用时,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

Answers:


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
好的,这很有帮助,并确认我认为这应该是默认值并不是很疯狂。
2015年

2
很好地帮助了您,当前的yum行为对于脚本的使用非常不友好。
卡拉塔

14

根据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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.