紹介する:
RHEL 6.9 32bit
オペレーティングシステムでは、次の作業が行われます。
次のコマンドを使用して、oracle(openjdkではない)バージョンのJRE
rpmをインストールしました。
rpm -Uvh
注文する。
rpmbuild
その後、oracle JREが提供する要件を使用してパッケージを構築し、libjvm.so
コマンドを使用してこれを確認しました。
rpm -ql jre1.8.0_111-1.8.0_111-fcs.i586
質問:
rpm
しかし、私が作成したものをインストールしたり、コマンドを使用しようとすると、まだインストールされていないというメッセージがrpm -q libjvm.so
表示されます。libjvm.so
spec
私は私のrpmファイルを置くことができることを知っています。
AutoReqProv: no
しかし、良い方法ではないような依存関係の問題を解決するために、rpmデータベースも再構築しましたが、役に立ちませんでした。
質問:
だから私はjre rpmがそれがどのように提供されたかを考えて理解しようとしましたが、libjvm.so
RPMデータベースは依存関係がlibjvm.so
まだインストールされていないと言い続けます。どんなアイデアがありますか?
編集する
JRE rpmは以下も提供します。
jaxp_parser_impl
xml-commons-apis
java
java-1.8.0
java-fonts
jre
jre-1.8.0
jre1.8.0_111 = 1.8.0_111-fcs
答え1
OpenJDK パッケージの要件は、libjvm.so
以下に由来します。
$ rpm -qp --provides java-1.8.0-openjdk-headless-1.8.0.121-1.b13.el6.x86_64.rpm \
2>/dev/null | grep libjvm
libjvm.so()(64bit)
libjvm.so(SUNWprivate_1.1)(64bit)
一方、Oracle RPMはこれらの機能を提供しません。構築中のパッケージから要件を削除する代わりに(ハンマーAutoReqProv
またはより複雑なオプションを使用)依存性スクリプト)もう1つのオプションは、必要な要件(Conflict
OpenJDKを含む)のみを提供するshimパッケージを作成することです。
Name: shim-libjvm
Version: 1
Release: 1%{?dist}
Summary: Shim for libjvm
Group: Development/Languages
License: CC BY-SA 3.0
URL: http://example.org
Provides: libjvm.so
BuildArchitectures: noarch
%description
Shim for libjvm
%install
mkdir -p %{buildroot}/usr/share/doc/shim-libjvm
echo "shim-libjvm is merely a provider for libjvm.so" > %{buildroot}/usr/share/doc/shim-libjvm/README
%files
%doc
/usr/share/doc/shim-libjvm/README
%changelog
* Thu Jun 8 2017 John Doe <[email protected]>
- Release on a mostly unsuspecting world.