指定 RPM 依赖项中的替代项
我有一个 Java 应用程序,我将其打包为 RPM。理想情况下,我想将 Java 指定为依赖项。我需要在 Fedora 和 RHEL 环境中安装。问题是 RHEL Java 被称为“java”,而 Fedora 不提供 Oracle/Sun 的发行版,需要从 Oracle 网站手动下载。 Oracle 的 Java 发行版称为“jre”或“jdk”,具体取决于您选择的包。
通常在 RPM SPEC 文件中我会写:
Depends: 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。
I've got a Java app that I am packaging as an RPM. Ideally I would like to specify Java as a dependency. I need to install in both Fedora and RHEL environments. The problem is RHEL Java is called 'java', while Fedora doesn't provide Oracle/Sun's distribution, leaving one to manually download from Oracle's website. Oracles distribution of Java is called either 'jre' or 'jdk' depending on which package you select.
Normally in a RPM SPEC file I would write:
Depends: java >= 1.6
But since the RHEL provides 'java', and Fedora via Sun/Oracle provides 'jre' or 'jdk' (and I can't use OpenJDK), I'm in a bit of a bind. Documentation so far hasn't shown a way to do 'java >= 1.6 || jre >= 1.6 || jdk >= 1.6' etc. Because the Java packages aren't under my control I can't just change one or the other to specify a 'Provides: Java'.
At present I see only two options:
- Omit Java as a dependency
- Create one RPM for Fedora, one for RHEL
I'm not keen on either option. Are there any other ways to achieve Java dependency where the providers all have different names?
Edit: A third option - create my own Java virtual package for Fedora that has a dependency on Sun's JDK RPM.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我已经为 Fedora 创建了自己的 java 虚拟包,它依赖于 sun 的 jdk rpm。
SPEC 文件的相关部分以防对其他人有帮助:
I've gone with creating my own java virtual package for Fedora that has a dependency on sun's jdk rpm.
Relevant portion of SPEC file in case it helps anyone else: