yum + 不更新已安装的软件包

yae*_*ael 6 yum rhel upgrade

我们正在尝试安装以下 rpm(实际上已经安装)

rpm -qa | grep sshpass
sshpass-1.06-2.el7.x86_64


yum install sshpass-1.06-1.el7.x86_64.rpm
Loaded plugins: langpacks
Examining sshpass-1.06-1.el7.x86_64.rpm: sshpass-1.06-1.el7.x86_64
sshpass-1.06-1.el7.x86_64.rpm: does not update installed package.
Error: Nothing to do

echo $?
1
Run Code Online (Sandbox Code Playgroud)

但它返回了exit code 1

为什么 yum 不忽略已经安装的 rpm 并返回错误?

其他例子

rpm -qa | grep figlet
figlet-2.2.5-9.el7.x86_64



yum install figlet-2.2.5-9.el7.x86_64.rpm
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
configuration
Examining figlet-2.2.5-9.el7.x86_64.rpm: figlet-2.2.5-9.el7.x86_64
figlet-2.2.5-9.el7.x86_64.rpm: does not update installed package.
Error: Nothing to do


echo $?
1
Run Code Online (Sandbox Code Playgroud)

注意-我们也尝试yum clean all

并删除了/var/cache/yum/*

但没有帮助

Rom*_*iak 7

我的印象是您在抱怨 yum 的默认行为。

yum 充当安装/删除或升级软件包的软件包管理器。

如果存在,Error: Nothing to do则安装/删除或升级包的任务实际上失败 - 因此返回代码 == 1。

如果您想检查该软件包是否已安装,如果未安装,请尝试以下操作:

rpm -qa | grep wget || yum -y install wget

这应该给你$?== 0 在标准场景中。