소개하다:
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
또는 더 복잡한 옵션 사용)종속성 스크립트) 또 다른 옵션은 필요한 요구 사항( 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.