在 RPM 依赖项中指定备选项

2022-09-04 04:19:53

我有一个Java应用程序,我将其打包为RPM。理想情况下,我想将Java指定为依赖项。我需要在 Fedora 和 RHEL 环境中进行安装。问题是RHEL Java被称为“java”,而Fedora不提供Oracle / Sun的发行版,只能从Oracle的网站手动下载。Java的Oracle发行版称为“jre”或“jdk”,具体取决于您选择的软件包。

通常在 RPM SPEC 文件中,我会这样写:

取决于:java >= 1.6

但是由于RHEL提供了“java”,而Fedora通过Sun/Oracle提供了“jre”或“jdk”(我不能使用OpenJDK),我有点束缚。到目前为止,文档还没有显示一种方法来执行“java >= 1.6||jre >= 1.6 ||jdk >= 1.6' 等因为 Java 包不在我的控制之下,我不能只更改一个或另一个包来指定“提供:Java”。

目前,我只看到两个选项:

  • 省略 Java 作为依赖项
  • 为 Fedora 创建一个 RPM,为 RHEL 创建一个 RPM

我不热衷于任何一种选择。有没有其他方法可以实现Java依赖性,其中提供程序都具有不同的名称?

编辑:第三个选项 - 为Fedora创建我自己的Java虚拟包,该包依赖于Sun的JDK RPM。


答案 1

我已经为Fedora创建了自己的java虚拟软件包,该软件包依赖于sun的jdk rpm。

SPEC文件的相关部分,以防它对其他人有所帮助:

Name: fedora-virtual-java
Version: 1.6
Provides: java
Requires: jdk > 1.6

答案 2

推荐