当包不可用时 yum 应该出错

pmr*_*pmr 17 centos yum centos5

我最近在脚本中遇到了一个错误,我尝试执行以下操作:

yum -y install another_package.x86_64 some_package.x86_64 && run_my_script
Run Code Online (Sandbox Code Playgroud)

该脚本在较新的 CentOS 上运行良好,但是当我尝试在 Cent OS 5 上执行它时,some_package.x86_64它不可用。但是,而不是错误和停止yum只是打印消息:

No package some_package.x86_64 available.
Run Code Online (Sandbox Code Playgroud)

如何yum在这种情况下强制出错(IMO 应该是默认值)以使我的脚本更健壮?

Xio*_*iov 19

根据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
Run Code Online (Sandbox Code Playgroud)

但是,您也可以将其设置为您的配置选项yum.conf

[main]
skip_missing_names_on_install=0
Run Code Online (Sandbox Code Playgroud)


mve*_*aes 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
Run Code Online (Sandbox Code Playgroud)

  • 好的,这有助于并确认我认为这应该是默认值并不疯狂。 (3认同)
  • 很有帮助,当前的 yum 行为对脚本使用非常不友好。 (2认同)