it-swarm-ja.com

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を使用していますが、RHEL7.5でも同じことが起こります。

3
jenny

したがって、ご指摘のとおり、両方のパッケージに共通の「提供」を持たせることができれば、最善の方法です。

これはおそらく手の届かないところにあるので、別のオプションは、Oracle Java 11RPMのプロキシとして疑似RPMを作成することです。

  • NameJava-11-Oracle(例)
  • ProvidesJava-11またはopenjdkRPMからの他の関連する値
  • RequiresJava> = 11(またはjdk、またはjre...)
  • %files:空のセクション(省略できます)

独自のパッケージで、そのプロキシRPMとopenjdkRPMの間で共通になっているProvides:に依存関係を追加します。

これで、パッケージは次のいずれかの状況でインストール可能になります。

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