如果缺少包,是否有 Yum 选项会产生错误?

如果缺少包,是否有 Yum 选项会产生错误?

我正在使用一组本地 yum 存储库,并尝试从这些存储库安装一组软件包。我注意到,当命令行上的某个包不存在时,Yum 只是打印出它没有找到,然后继续它的快乐方式。

当这种情况发生时我可以让 Yum 退出吗?是否有其他一些 Yum 实用程序可以用来给它我的存储库和包并告诉我是否有问题?

yum --disablerepo=* --enablerepo=myrepo --nogpgcheck \
   --installroot=/var/some/place/test install \
   abasdfasfeafseasfeasef bash coreutils utils-linux

Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
No package **abasdfasfeafseasfeasef** available.
No package **utils-linux** available.

<snip>

Complete!

我从另一个脚本调用 Yum,但似乎无法判断我安装的软件包是否是真的安装。

答案1

现代版本的 yum (yum-3.4.3-133.el7+,)提供了两个应该有助于此用例的选项:

安装时跳过缺失名称如果设置为 False,如果找不到任何提供的名称(程序包、组、rpm 文件),“yum install”将会失败。布尔值(1、0、True、False、是、否)。默认为 True。

更新时跳过缺失名称如果设置为 False,如果找不到任何提供的名称(程序包、组、rpm 文件),“yum update”将会失败。如果提供的名称是可用但未安装的包,它也会失败。布尔值(1、0、True、False、是、否)。默认为 True。

来源:手册页

用法:

yum --setopt=skip_missing_names_on_install=False <commands-here>

答案2

尝试使用 dnf 而不是 yum,如果软件包无法像 yum 以前那样可用,则会失败。在 CentOS 上,您可以通过以下方式安装它:

yum -y install epel-release && \
yum -y install dnf

然后在丢失的包上你会得到一个错误:

dnf -y install foobar
Error: no package matched: foobar

答案3

我不知道 yum,但你可以使用 询问是否安装了软件包rpm -q my_package ...。如果缺少任何包,它将以失败状态退出。

$ rpm -q abasdfasfeafseasfeasef bash coreutils utils-linux
package abasdfasfeafseasfeasef is not installed
bash-4.1.2-9.el6_2.x86_64
coreutils-8.4-19.el6.x86_64
package utils-linux is not installed
$ echo $?
1
$ rpm -q bash
bash-4.1.2-9.el6_2.x86_64
$ echo $?
0

相关内容