【问题标题】:rpmbuild Requires(post) does not work as expected, require a local packagerpmbuild Requires(post) 无法按预期工作,需要本地包
【发布时间】:2014-12-28 03:58:39
【问题描述】:

从我读到的关于规范文件的所有内容中,我的理解是 Requires(post) 语句会使得它之后的任何库在安装完成之前都不需要。似乎并非如此。我是不是误解了这个命令?

我的主要目标是在 %pre 部分下载另一个 rpm,然后稍后需要它,以便从本地副本安装它。如果除了我正在做的事情之外还有其他方法可以解决这个问题,我将非常感谢您的帮助?

【问题讨论】:

  • 如果在交易开始时包裹不可用,我不相信您可以在交易期间使它可用。除了这个问题的其他一切。

标签: dependencies rpm yum rpmbuild requires


【解决方案1】:

Requires(post) 标记告诉 rpm,您的软件包需要在您的 RPM 的 %post 脚本可以运行之前安装(可能是因为您在您的%post scriptlet 以某种方式)。

这用于在事务中订购包安装。

据我所知(并且我相信 yum 的详细调试输出将证实这一点)所需的全套包信息已组装交易开始之前不会像包一样随意已安装。

因此,正如我在评论中所指出的,除了这里的所有其他内容,我不相信您可以交易中制作可用于交易的包。

【讨论】:

  • Etan,感谢您的回答。所以我试着让我的需求声明类似于“Requires:http:....../package.rpm”并给它整个地址,这也失败了。有没有办法在我的要求部分运行之前运行 yum-config-manager --add-repo 命令?
  • @MarkS 您没有“要求部分”。您的规范中有 Requires 条目,这些条目在生成的 RPM 的标头中进行编码。 Yum/rpm 然后使用这些来找到合适的包并构建一个有效的事务。所以不,你不能在那个时间点做任何事情。在这一点上,你只是数据,而不是代码。如果你需要一个外部存储库,你可以创建一个myrepo-release 风格的包(比如redhat-releasecentos-releaseepel-release 并让人们先安装它,无论如何这是一个好主意,因为他们会得到你的GPG密钥也)。
【解决方案2】:

您不能从 RPM 安装另一个 RPM。数据库将被锁定。将它们放在同一个 yum 存储库中,然后yum 将确保它们都已安装,如果您有它们需要彼此。

【讨论】:

    猜你喜欢
    • 2016-04-09
    • 2018-05-28
    • 2018-08-22
    • 2018-05-25
    • 2015-03-22
    • 2016-12-22
    • 2021-10-07
    • 1970-01-01
    相关资源
    最近更新 更多