openjdk 또는 Oracle Java 11 패키지가 충족할 수 있도록 Java 11을 사용하는 방법은 무엇입니까?

openjdk 또는 Oracle Java 11 패키지가 충족할 수 있도록 Java 11을 사용하는 방법은 무엇입니까?

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-oracleRPM은 이미 활성 저장소에 설치되어 있거나 사용 가능합니다.

관련 정보