【问题标题】:install RPM from an rpm从 rpm 安装 RPM
【发布时间】:2012-12-15 09:56:21
【问题描述】:

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

 %post
 rm -f /var/lib/rpm/__db.0*
 rpm --rebuilddb
 rpm -ivh xyz.rpm

但是当安装主 RPM 时,它会为另一个 rpm 安装获得锁定而不是释放。所以它会给出以下警告并停止安装过程。然后无限等待。 所以任何解决方案。

【问题讨论】:

  • 这是“不要那样做”的典型案例,尤其是在 rpm 本身处于活动状态时破坏 RPM DB。不要在 rpm 附近工作。使用正确的 Requires: 标签,如@Forrest 所述。

标签: rpm rpmbuild rpm-spec


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    S.O 不允许我对之前的答案添加评论,但我想强调一件事:

    您在 %post 期间执行 rpm-i 的计划不可能奏效。从架构上讲,由于您提到的确切原因,它不会发生:rpm 锁定 RPMdb,它这样做是为了防止竞争条件和一些损坏。因此,您将需要找到另一种解决方案。

    有一个溶液中,并且到目前为止,要求:位是一个。我知道您想在当前的 rpm 之后安装您的 xyz rpm,但是没有“安装之后”,因为没有后要求,原因与我们使用“转到”而不是“来自”的原因相同。

    所以,使用 Requires: 标签。如果您的订购不完美,仅使用您的 abc.rpm 取决于 xyz.rpm,或 xyz.rpm 取决于 abc.rpm,请构建第三个“虚拟”RPM,它不提供有效负载但需要它们两者:至少,这最后的解决方案将确保这两个包都安装。

    虽然其他人都推荐了 Requires: 标签,并在 %post 中讨论了 rpm-i 的替代方案,但我没有找到任何人直接在 %post 中解决使用 rpm 的可能性;而且我想确保 OP 知道拟议的计划在不久的将来没有发挥作用的潜力。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-11-02
        • 1970-01-01
        • 2020-03-28
        • 1970-01-01
        • 2012-08-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多