RPM 数据库未看到作为 RPM 一部分安装的文件

RPM 数据库未看到作为 RPM 一部分安装的文件

介绍:

以下是在RHEL 6.9 32bit操作系统上完成的。

我使用以下命令安装了oracle(不是openjdk)版本的JRErpm

rpm -Uvh

命令。

rpmbuild然后,我使用 oracle JRE 提供的require构建了一个包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或更复杂的选项,涉及依赖脚本)另一种选择是创建一个 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 <[email protected]>
- Release on a mostly unsuspecting world.

相关内容