【问题标题】:building RPM package: force to install in path of a dependent relocated package构建 RPM 包:强制安装在依赖重定位包的路径中
【发布时间】:2015-04-05 13:54:29
【问题描述】:

我有 2 个依赖包应该放在同一个目标中。包 B 依赖于包 A。

包 A 可以重新定位到任何其他位置。 我现在希望包 B 被强制放置在与包 A 相同的目标中。或者简单地说,如果没有相同的 --prefix,包 B 应该无法安装。

任何想法如何实现这一点?

我想放一个 %pre 脚本来检查这个。但我认为这没有帮助,因为我无法阅读此脚本中给定的“前缀” - 或者我可以吗?

感谢您的帮助!

【问题讨论】:

  • 您知道一种方法来查询软件包的安装前缀吗?我不会随便(但我从未尝试过)。话虽如此,如果您可以检查 your 前缀是否有您依赖的文件,则无需这样做。 (实际上我想知道文件先决条件是否会受到给定前缀的影响。)
  • 是的,就是rpm -qa --queryformat '%{instprefixes}' NAME_OF_PACKAGE
  • 有趣。那么关于获取 current 包的前缀的问题是什么? %{DEFAULTPREFIX}%{INSTALLPREFIX} 是否根据参数在 %pre 中正确展开?
  • 不,它们不会被扩展。是的,获取当前包(包 B)的前缀就足够了

标签: rpm rpmbuild rpm-spec


【解决方案1】:

哈。所以我做了一些源代码潜水,发现显然(至少对于 rpm 4.8.0,我没有查看其他版本)RPM_INSTALL_PREFIXRPM_INSTALL_PREFIX# 环境变量设置为 %pre(可能还有其他scriptlets) 的值(看起来是%{INSTPREFIXES} 和/或%{INSTALLPREFIX} 宏)。 [source link]

我会在你的 %pre 脚本中尝试这些。他们看起来会给你你想要的。

Same code in rpm head.

【讨论】:

  • 但这将是针对正在安装的软件包,而不是他试图匹配的 other 软件包...
  • @AaronD.Marasco 他可以在%pre 期间查询rpm 已安装包的前缀我推测(或者只是从其他包中搜索他依赖的已知文件的当前包的前缀) )。
猜你喜欢
  • 2012-10-24
  • 2021-05-01
  • 1970-01-01
  • 2012-01-26
  • 1970-01-01
  • 2019-01-15
  • 1970-01-01
  • 2014-12-09
  • 1970-01-01
相关资源
最近更新 更多