Rhel

RPM 數據庫沒有看到作為 RPM 的一部分安裝的文件

  • June 8, 2017

介紹:

以下是在RHEL 6.9 32bit作業系統上完成的。

JRE我使用 rpm安裝了 oracle(不是 openjdk)版本

rpm -Uvh

命令。

然後,我使用oracle JRE 提供的rpmbuild要求建構了一個包,並使用命令驗證了這一點。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

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或更複雜的涉及依賴腳本的選項)之外,另一種選擇是創建一個 shim 包,它只提供必要的要求(並且可能Conflict使用 OpenJDK )。

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 <jdoe@example.org>
- Release on a mostly unsuspecting world.

引用自:https://unix.stackexchange.com/questions/370001