openjdkまたはOracle Java 11パッケージを満たすためにJava 11を使用する方法は?

openjdkまたはOracle Java 11パッケージを満たすために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でも同じことが起こります。

答え1

したがって、指摘したように、最高のシナリオは、両方のパッケージが共通の「サプライヤー」を持つことができるということです。

これはユーザーの能力外である可能性があるため、別のオプションはOracle Java 11 RPMのプロキシとして機能する疑似RPMを作成することです。

  • Name: java-11-oracle(例えば)
  • Provides:java-11または openjdk RPM のその他の関連値
  • Requiresjava>= 11(またはjdk、またはjre...)
  • %files:貧しい部分(省略可能)

自分のパッケージでProvides:現在のRPMとopenjdkの間で一般的に使用されているエージェントの依存関係を追加します。

これにより、次のいずれかの状況でパッケージをインストールできます。

  • OpenJDK 11 がリポジトリにインストールされているか使用可能です。
  • OracleのJava 11 RPMおよびjava-11-oracleRPMは、すでにアクティブ・リポジトリーにインストールされているか使用可能です。

関連情報