首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从RPM安装rpm

从RPM安装rpm
EN

Stack Overflow用户
提问于 2012-12-31 14:22:06
回答 3查看 1.3K关注 0票数 2

我正在尝试从一个RPM安装中安装多个RPM。我已经将spec文件放入%post部分中,我使用命令安装另一个rpm。

代码语言:javascript
复制
 %post
 rm -f /var/lib/rpm/__db.0*
 rpm --rebuilddb
 rpm -ivh xyz.rpm

但是,当安装主install.so时,它将获得另一个RPM的锁,但不会释放,它会给出以下警告,并停止安装process.and等待无限。所以任何解决方案都可以。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-01 15:30:49

如果我正确理解了您的问题,您应该使用Requires tag

票数 4
EN

Stack Overflow用户

发布于 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知道在不久的将来,拟议的计划没有潜力发挥作用。

票数 1
EN

Stack Overflow用户

发布于 2020-05-06 19:44:46

您可以在%post脚本中执行rm -rf /var/lib/rpm/.rpm.lock

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14098230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档