如何为RPM依赖项定义OR逻辑

时间:2015-07-16 12:43:40

标签: redhat rpm

我正在创建一个RPM,我需要检查机器上是否安装了Java 8版本。

问题在于Oracle提供版本绑定的RPM,其名称为jdk1.8.0_45,Redhat为RPM提供了java-oracle-8等名称。我不关心安装哪一个,只要安装了其中一个,那么如何在Java 8上定义OR条件逻辑? (注意这是针对RHEL5或RHEL6目标,因此不能使用新的功能)

2 个答案:

答案 0 :(得分:2)

据我所知,RPM没有这样的功能。你不能声明这样的要求。

正如所说的RPM所具有的,以及用作粗略等同于此的概念,是"提供"。

任何软件包都可以Provide: some_capability,然后其他软件包Require: some_capability可以Require: <some_package> {。}}。

如果绝对必要,你也可以Require: /some/file/path(尽可能避免这种情况)。

因此,您需要比较所提供的RPM所提供的功能,并寻找您可以依赖的任何常用功能。希望你可以使用一些共同点。如果没有,那么除了将需求放在RPM中之外别无选择,希望他们拥有它并在运行时检测它(可能使用启动脚本)。

(从技术上讲,您也可以在%pre期间进行检查,如果您无法在某处找到java,则可以退出,但我强烈建议不要这样做。)

答案 1 :(得分:0)

FYI - 依赖中的布尔逻辑称为&#34; Rich dependency&#34;目前正在引入RPM并且可能会落入Fedora 24.请参阅http://lists.rpm.org/pipermail/rpm-maint/2014-February/003666.html