我们正在自动执行一些卸载/安装 RPM 的部署脚本。我在我们的多个主机上看到 rpm -qa 返回如下内容:
# rpm -qa | grep tcl
tcl-8.5.7-6.el6.x86_64
tcl-8.5.7-6.el6.x86_64
tcl-8.5.7-6.el6.x86_64
tcl-8.5.7-6.el6.x86_64
tcl-8.5.7-6.el6.x86_64
tcl-8.5.7-6.el6.x86_64
使用 rpm -e 和 rpm -i 时,为什么会出现这种情况?有没有办法防止这种情况发生?如果我在这种情况下运行 rpm -e,我会得到
# rpm -e tcl-8.5.7-6.el6
error: "tcl-8.5.7-6.el6" specifies multiple packages:
tcl-8.5.7-6.el6.x86_64
tcl-8.5.7-6.el6.x86_64
tcl-8.5.7-6.el6.x86_64
tcl-8.5.7-6.el6.x86_64
tcl-8.5.7-6.el6.x86_64
tcl-8.5.7-6.el6.x86_64
所以我不得不使用-vv --allmatches --nodeps --noscripts --notriggers
开关
答案1
不久,
rpm --rebuilddb
如果您还没有尝试的话,您可以尝试一下吗?
http://www.rpm.org/max-rpm/rpm.8.html
或者,您可以使用yum install
,而不是rpm
?Yum 通常会更好地管理您的数据库。
答案2
只是为了回答如何防止这种情况(并添加到其他答案),我在自动脚本上运行 dcrpm (https://github.com/facebookincubator/dcrpm)在安装软件之前,您可以使用 pip install dcrpm 安装它...它通常可以帮助解决我遇到的许多问题