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 のその他の関連値Requires
:java
>= 11(またはjdk
、またはjre
...)%files
:貧しい部分(省略可能)
自分のパッケージでProvides:
現在のRPMとopenjdkの間で一般的に使用されているエージェントの依存関係を追加します。
これにより、次のいずれかの状況でパッケージをインストールできます。
- OpenJDK 11 がリポジトリにインストールされているか使用可能です。
- OracleのJava 11 RPMおよび
java-11-oracle
RPMは、すでにアクティブ・リポジトリーにインストールされているか使用可能です。