我正在尝试从一个RPM install.i安装多个RPM。将spec文件放入%post部分,我使用命令安装另一个rpm。
%post
rm -f /var/lib/rpm/__db.0*
rpm --rebuilddb
rpm -ivh xyz.rpm
但是当主RPM安装时,它将获得另一个rpm install的锁定而不释放。因此它会发出以下警告并停止安装过程。等待无限。 所以任何解决方案。
答案 0 :(得分:3)
如果我正确理解您的问题,您应该使用Requires tag。
答案 1 :(得分:0)
S.O不会让我对之前的答案发表评论,但我想强调一件事:
没有办法你在%post期间做rpm-i的计划是可行的。从结构上讲,它不会发生在你提到的确切原因:rpm锁定RPMdb,它这样做是为了防止竞争条件和一些损坏。所以你需要找到另一种解决方案。
有一个解决方案,到目前为止,Requires:位是一个。我知道你想要安装你当前的xyz rpm,但没有“安装后”,因为没有后期要求,原因与我们使用'转到'而不是'来自'的原因相同。
因此,请使用Requires:标记。如果你的abc.rpm取决于xyz.rpm,或者xyz.rpm取决于abc.rpm你的订购并不完美,那么建立一个第三个“虚拟”RPM,它不提供有效载荷但是要求它们:至少,最后一个解决方案将确保安装两个软件包。
虽然其他人都推荐了Requires:标签,并在%post中讨论了rpm-i的替代方案,但我没有找到任何人直接在%post中使用rpm的可能性。我想确保OP知道在不久的将来,拟议的计划没有潜力。
答案 2 :(得分:0)
您可以在%post脚本中执行rm -rf /var/lib/rpm/.rpm.lock