2015-02-05 67 views
1

的路径我有2个谁应该被放置在同一个目标依赖包。包B依赖于包A.建筑RPM包:力安装在相关的搬迁包

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

任何想法如何acieve呢?

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

谢谢你的帮助!

+0

你知道一种查询软件包的方法吗?我不是非正式的(但我从未尝试过)。这就是说你不需要这样做,而只需检查你的*前缀是否有你依赖的文件。 (其实我不知道文件的先决条件是否会受到给定前缀的影响。) – 2015-02-05 16:06:19

+1

是的,这是'rpm -qa --queryformat'%{instprefixes}'NAME_OF_PACKAGE' – Karl 2015-02-05 17:18:12

+0

有趣。那么,关于为* current *包获取前缀的问题呢?基于参数,'%{DEFAULTPREFIX}'或'%{INSTALLPREFIX}'是否在'%pre'中正确扩展? – 2015-02-05 17:47:34

回答

0

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

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

Same code in rpm head.

+0

但是,这将是正在安装的包,而不是他正试图匹配的* other *包... – 2015-02-07 01:07:59

+0

@ AaronD.Marasco他可以查询'''''在'%pre'期间,'rpm'作为已安装软件包的前缀我假设(或者只是从其他软件包中搜索已知文件的当前软件包的前缀)。 – 2015-02-08 22:35:00

+0

谢谢你!那就是我需要的!多好:D – Karl 2015-02-09 10:01:19