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