我正在尝试从一个RPM安装中安装多个RPM。我已经将spec文件放入%post部分中,我使用命令安装另一个rpm。
%post
rm -f /var/lib/rpm/__db.0*
rpm --rebuilddb
rpm -ivh xyz.rpm但是,当安装主install.so时,它将获得另一个RPM的锁,但不会释放,它会给出以下警告,并停止安装process.and等待无限。所以任何解决方案都可以。
发布于 2013-01-01 15:30:49
如果我正确理解了您的问题,您应该使用Requires tag。
发布于 2015-12-31 01:07:14
S.O不会让我对之前的回答附加评论,但我想强调一件事:
您在%post期间执行rpm-i的计划是不可能实现的。从体系结构上讲,这不会发生,因为您提到的确切原因是: rpm锁定RPMdb,它这样做是为了防止竞争条件和一些损坏。因此,您需要找到另一个解决方案。
有一个解决方案,到目前为止,就是Requires: bit。我知道你想在当前版本之后安装xyz rpm,但是没有'install after‘,因为没有post-requires,就像我们使用'go to’而不是'come from‘一样。
因此,使用Requires:标记。如果你的abc.rpm依赖于xyz.rpm或者xyz.rpm依赖于abc.rpm并不完美,那么构建第三个“虚拟”RPM,它不提供有效负载,但同时需要它们:至少,最后一个解决方案将确保两个包都已安装。
虽然其他每个人都推荐了Requires:标签,并在%post中讨论了rpm-i的替代方案,但我没有发现任何人在%post中直接使用rpm本身的可能性;我想确保OP知道在不久的将来,拟议的计划没有潜力发挥作用。
发布于 2020-05-06 19:44:46
您可以在%post脚本中执行rm -rf /var/lib/rpm/.rpm.lock
https://stackoverflow.com/questions/14098230
复制相似问题