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)