Rpm
如何依賴 java 11 才能滿足 openjdk 或 Oracle java 11 包的要求?
我正在嘗試創建一個依賴於 java 11 的 rpm 包;但是,似乎 openjdk 和 Oracle java 11 包不提供任何重疊的 java 虛擬包。
OpenJDK Java 11 提供:
$ repoquery --provides java-11-openjdk java-11 = 1:11.0.2.7-0.el7_6 java-11-openjdk = 1:11.0.2.7-0.el7_6 java-11-openjdk(x86-32) = 1:11.0.2.7-0.el7_6 jre-11 = 1:11.0.2.7-0.el7_6 jre-11-openjdk = 1:11.0.2.7-0.el7_6 libjawt.so java-11 = 1:11.0.2.7-0.el7_6 java-11-openjdk = 1:11.0.2.7-0.el7_6 java-11-openjdk(x86-64) = 1:11.0.2.7-0.el7_6 jre-11 = 1:11.0.2.7-0.el7_6 jre-11-openjdk = 1:11.0.2.7-0.el7_6
Oracle Java 11 安裝程序提供:
$ rpm -qp --provides /tmp/jdk-11.0.2_linux-x64_bin.rpm jdk jaxp_parser_impl xml-commons-apis java java-11.0.2 java-fonts jre jre-11.0.2 jdk-11.0.2 = 2000:11.0.2-ga jdk-11.0.2(x86-64) = 2000:11.0.2-ga
如何將我的包的依賴項設置為足夠靈活以使用 java11?
我認為 rpm布爾依賴項可能會有所幫助,但我找不到有關將 rpm 更新到 4.13 版的資訊。如果我將包依賴項設置為:
Requires: jre-11 >= 11, rpm >= 4.13
安裝失敗並顯示:Error: Package: MYPACKAGE Requires: rpm >= 4.13 Installed: rpm-4.11.3-32.el7.x86_64 (installed) rpm = 4.11.3-32.el7 Available: rpm-4.11.3-35.el7.x86_64 (base) rpm = 4.11.3-35.el7
rpm 的 4.13 版似乎不可用?我使用的是 CentOS7,但同樣的情況也發生在 RHEL 7.5 上。
因此,正如您所指出的,如果可以使兩個軟體包都具有共同的“提供”,那麼最好的辦法是。
由於這可能不在您的範圍之內,因此另一種選擇是創建一個偽 RPM 作為 Oracle Java 11 RPM 的代理。
Name
:(java-11-oracle
例如)Provides
:java-11
或來自 openjdk RPM 的任何其他相關值Requires
:java
>= 11 (或jdk
, 或jre
…)%files
: 空白部分(可以省略)在您自己的包中,
Provides:
向該代理 RPM 和 openjdk 之間現在共有的依賴項添加一個依賴項。然後,您的軟體包將可以在以下情況之一中安裝:
- OpenJDK 11 已安裝或在儲存庫中可用
- Oracle 的 Java 11 RPM 和您的
java-11-oracle
RPM 已安裝或在活動儲存庫中可用。