介绍:
以下是在RHEL 6.9 32bit
操作系统上完成的。
我使用以下命令安装了oracle(不是openjdk)版本的JRE
rpm
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.