我有一个 Java 应用程序,我将其打包为 RPM。理想情况下,我想将 Java 指定为依赖项。我需要在 Fedora 和 RHEL 环境中安装。问题是 RHEL Java 被称为“java”,而 Fedora 不提供 Oracle/Sun 的发行版,只能从 Oracle 网站手动下载。Java 的 Oracle 发行版称为“jre”或“jdk”,具体取决于您选择的包。
通常在 RPM SPEC 文件中我会写:
取决于:java >= 1.6
但是由于 RHEL 提供了“java”,而通过 Sun/Oracle 的 Fedora 提供了“jre”或“jdk”(我不能使用 OpenJDK),所以我有点束手无策。到目前为止,文档还没有显示出一种方法来执行 'java >= 1.6 || jre >= 1.6 || jdk >= 1.6' 等等。因为 Java 包不在我的控制之下,所以我不能只更改其中一个包来指定“提供:Java”。
目前我只看到两个选项:
- 省略 Java 作为依赖项
- 为 Fedora 创建一个 RPM,为 RHEL 创建一个
我不热衷于任何一种选择。有没有其他方法来实现提供者都具有不同名称的 Java 依赖关系?
编辑:第三种选择 - 为依赖于 Sun 的 JDK RPM 的 Fedora 创建我自己的 Java 虚拟包。