如果是最新的话,yum install local rpm会导致错误

当从本地文件目录安装rpm包时,它首次运行良好

sudo yum install packages/* -y --disablerepo=* 

当同样的东西第二次作为自动化脚本的一部分运行时,它会抛出一个错误(退出代码1)

 packages/package.rpm: does not update installed package. Error: Nothing to do 

我可以运行更新(退出代码0)

 sudo yum update packages/* -y --disablerepo=* ... No packages marked for update 

与此问题是,更新将跳过未安装的软件包。

如果在这里有任何真正的问题,我不想忽略退出代码,只想install-or-update 。 有没有一个rpm -i等价物达到这个目的? 请注意,这是在一组rpm包上完成的,这些包可能在任何时候都包含额外的包。

我想一个select是在shell脚本中迭代它们,并检查它们是否安装,但是依赖性parsing可能会变得相当痛苦,听起来像重新发明自行车。

更新:
rpm --install会根据失败的软件包的数量select退出代码。 https://www.redhat.com/archives/rpm-list/2005-July/msg00071.html

rpm --freshen会忽略以前没有安装的任何rpm,而根本没有输出。

在我的系统上(centos6,centos7),“yum localinstall”即使是“Error:Nothing to do”也会返回代码0,而“yum install”返回1。

 sudo yum localinstall packages/* -y --disablerepo=* 

无论如何,您还可以检查消息结果,以便将其忽略为自动化脚本中的“正常错误”,例如使用bash:

 sudo yum install packages/* -y --disablerepo=* 2>&1 | tee /tmp/yum.output grep -q "Error: Nothing to do" /tmp/yum.output if [ $? -eq 0 ]; then ... code for no error else ... code for error fi