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でも同じことが起こります。
したがって、ご指摘のとおり、両方のパッケージに共通の「提供」を持たせることができれば、最善の方法です。
これはおそらく手の届かないところにあるので、別のオプションは、Oracle Java 11RPMのプロキシとして疑似RPMを作成することです。
Name
:Java-11-Oracle
(例)Provides
:Java-11
またはopenjdkRPMからの他の関連する値Requires
:Java
> = 11(またはjdk
、またはjre
...)%files
:空のセクション(省略できます)独自のパッケージで、そのプロキシRPMとopenjdkRPMの間で共通になっているProvides:
に依存関係を追加します。
これで、パッケージは次のいずれかの状況でインストール可能になります。
Java-11-Oracle
RPMは、アクティブなリポジトリにインストールされているか、使用可能です。