Java 11에 의존하는 rpm 패키지를 만들려고 합니다. 그러나 openjdk 및 Oracle Java 11 패키지는 겹치는 Java 가상 패키지를 제공하지 않는 것 같습니다.
OpenJDK Java 11은 다음을 제공합니다.
$ repoquery --provides java-11-openjdk
java-11 = 1:11.0.2.7-0.el7_6
java-11-openjdk = 1:11.0.2.7-0.el7_6
java-11-openjdk(x86-32) = 1:11.0.2.7-0.el7_6
jre-11 = 1:11.0.2.7-0.el7_6
jre-11-openjdk = 1:11.0.2.7-0.el7_6
libjawt.so
java-11 = 1:11.0.2.7-0.el7_6
java-11-openjdk = 1:11.0.2.7-0.el7_6
java-11-openjdk(x86-64) = 1:11.0.2.7-0.el7_6
jre-11 = 1:11.0.2.7-0.el7_6
jre-11-openjdk = 1:11.0.2.7-0.el7_6
Oracle Java 11 설치 프로그램은 다음을 제공합니다.
$ rpm -qp --provides /tmp/jdk-11.0.2_linux-x64_bin.rpm
jdk
jaxp_parser_impl
xml-commons-apis
java
java-11.0.2
java-fonts
jre
jre-11.0.2
jdk-11.0.2 = 2000:11.0.2-ga
jdk-11.0.2(x86-64) = 2000:11.0.2-ga
java11에서 작동할 수 있을 만큼 유연하도록 패키지의 종속성을 설정하는 방법은 무엇입니까?
rpm인줄 알았는데부울 종속성도움이 될 수도 있지만 rpm을 버전 4.13으로 업데이트하는 방법에 대한 정보를 찾을 수 없습니다. 패키지 종속성을 다음으로 설정하면 다음
Requires: jre-11 >= 11, rpm >= 4.13
과 같이 설치가 실패합니다.
Error: Package: MYPACKAGE
Requires: rpm >= 4.13
Installed: rpm-4.11.3-32.el7.x86_64 (installed)
rpm = 4.11.3-32.el7
Available: rpm-4.11.3-35.el7.x86_64 (base)
rpm = 4.11.3-35.el7
rpm 4.13 버전을 사용할 수 없는 것 같나요? 저는 CentOS7을 사용하고 있는데 RHEL 7.5에서도 같은 일이 발생합니다.
답변1
따라서 지적했듯이 가장 좋은 시나리오는 두 패키지 모두 공통 "공급자"를 가질 수 있다는 것입니다.
이는 사용자의 능력 밖일 수 있으므로 또 다른 옵션은 Oracle Java 11 RPM의 프록시 역할을 하는 의사 RPM을 생성하는 것입니다.
Name
:java-11-oracle
(예를 들어)Provides
:java-11
또는 openjdk RPM의 기타 관련 값Requires
:java
>= 11 (또는jdk
, 또는jre
...)%files
: 빈부분 (생략가능)
자신의 패키지에서 Provides:
현재 RPM과 openjdk 사이에 공통으로 사용되는 에이전트에 대한 종속성을 추가하세요.
그러면 다음 상황 중 하나에서 패키지를 설치할 수 있습니다.
- OpenJDK 11이 저장소에 설치되어 있거나 사용 가능합니다.
- Oracle의 Java 11 RPM 및
java-11-oracle
RPM은 이미 활성 저장소에 설치되어 있거나 사용 가능합니다.