Centos 7でjava-1.8.0-openjdkを要求するようにrpm仕様ファイルを変更する方法は?

Centos 7でjava-1.8.0-openjdkを要求するようにrpm仕様ファイルを変更する方法は?

私は通常次のように始めます。最小セントース7そして走る

yum install java-1.8.0-openjdk

Java ランタイム環境をインストールするには。 JARファイルを実行できるので、これはうまく機能します。

今は回転速度 仕様書使用」必要句をパッケージの依存関係として指定します。たとえば、次のようになります。

Requires:        jre-headless = 1.8

しかし、私がするとき

yum install my-rpm-1.0.0.el7.x86_64.rpm

次のエラーメッセージが表示されます。

Available: 1:java-1.8.0-openjdk-headless-1.8.0.272.b10-1.el7_9.i686
Available: 1:java-11-openjdk-headless-11.04.11-0.el7_6.i686
    Not found

You could try using --skip-broken to work around this problem
You could try running: rpm -Va --nofiles --nodigest

私の仕様ファイルの「Requires:」セクションにどのような問題があるかを知っている人はいますか?私は仕様ファイルが「Requires」句を介して「yum install java-1.8.0-openjdk」を自動的に実行したいと思います。

答え1

何も提供されていないと思いますjre-headless = 1.8。利用可能な仮想パッケージを見てみましょう。

$ repoquery --provides $(repoquery --whatprovides jre-headless) | sort -u | grep jre-headless
jre-headless = 1:1.7.0
jre-headless = 1:1.8.0

したがって、次のように書くことができます。

Requires: jre-headless = 1:1.8.0

答え2

1.81:パッケージのバージョン名にはエポック番号(興味深い接頭辞)が含まれているため、これだけでは不十分です。

# rpm -qa | grep head
java-1.8.0-openjdk-headless-1.8.0.332.b09-1.el7_9.x86_64
# rpm -q --provides java-1.8.0-openjdk-headless | grep jre
jre-1.8.0-headless = 1:1.8.0.332.b09-1.el7_9
jre-1.8.0-openjdk-headless = 1:1.8.0.332.b09-1.el7_9
jre-headless = 1:1.8.0
jre-openjdk-headless = 1:1.8.0.332.b09-1.el7_9

代わりに使用する場合は、依存関係の解決を1:1.8.0満たす必要があります。

# grep Requ somedirectory.spec
Requires:       jre-headless = 1:1.8.0
# rpmbuild -ba somedirectory.spec
...
# rpm -qp --requires rpmbuild/RPMS/x86_64/somedirectory*
jre-headless = 1:1.8.0 
# yum -y install /root/rpmbuild/RPMS/x86_64/somedirectory*
...

関連情報