RPM 数据库通常是如何损坏的?

RPM 数据库通常是如何损坏的?

我们正在自动执行一些卸载/安装 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 安装它...它通常可以帮助解决我遇到的许多问题

相关内容