특정 구현(예: OpenJDK, IcedTea, Oracle)을 지정하지 않고 .deb 패키지가 Java에 의존한다는 것을 나타낼 수 있습니까?

특정 구현(예: OpenJDK, IcedTea, Oracle)을 지정하지 않고 .deb 패키지가 Java에 의존한다는 것을 나타낼 수 있습니까?

Java를 실행해야 하는 응용 프로그램이 포함된 .deb 패키지가 있습니다. 그러나 어떤 구현을 설치했는지(예: OpenJDK, IcedTea, Oracle)에는 관심이 없으며 사용자가 이미 설치한 경우 다른 구현을 다운로드하도록 강요하고 싶지 않습니다. 또한 사용자가 구현을 설치하지 않은 경우도 처리하고 싶습니다.

.deb 패키지에 Java 구현이 필요함을 나타내는 방법이 있습니까? 그렇다면 구현이 설치되지 않은 상황을 어떻게 처리합니까?

답변1

.deb패키지에 Java Runtime Environment(JDK가 아닌 JVM)가 필요함을 나타내는 표준 방법은 또는 (GUI가 있는 프로그램의 경우 전자, GUI가 필요하지 않은 경우 후자) default-jre에 대한 종속성을 지정하는 것입니다. default-jre-headless적절한 버전에 대한 종속성 java-runtime( java6-runtime응용 프로그램이 Java 6 이상, java7-runtimeJava 7 이상 등을 사용하는 경우):

Depends: default-jre | java6-runtime

또는

Depends: default-jre-headless | java6-runtime-headless

등.

이는 Debian에서 제공하는 모든 JRE(또는 Debian 파생물) 및 Oracle JRE를 처리합니다.만약에기본 JRE java-package(default-jre데비안 8용 OpenJDK 7,데비안 9용 OpenJDK 8,데비안 10용 OpenJDK 11), 이렇게 하면 다른 JRE가 설치되지 않은 경우에도 JRE가 설치됩니다. 다양한 JRE 패키지는 java-runtime지원 수준에 따라 변형을 제공하므로 사용자가 다른 JRE를 설치하도록 강요하는 대신 기존의 호환 가능한 JRE(적절하게 패키지됨)가 사용됩니다.

수동으로 설치하고 패키지를 푼 Oracle JRE를 포함하여 설치된 JRE를 지원하려면 패키지의 "권장" 섹션에서 위의 내용을 사용하고 java시작 스크립트에서 실행해 보세요. 이상적으로 postinst는 설치 시(단, JRE를 찾을 수 없는 경우 설치가 실패하지 않는지 확인) 및 실행해야 할 때 모두 JRE가 있는지 확인 해야 합니다 java. 패키지에 다음이 포함되어 있으면 복잡할 수 있습니다. initscript 또는 systemd 유닛 등(관리자에게 문제가 있음을 알리는 방법이 명확하지 않기 때문에 복잡하지만 이를 인지하고 이해할 것이라고 확신할 수 있습니다).

답변2

이를 제어 파일에 삽입하면 최소 Java 버전과 설치할 Java 구현도 지정할 수 있습니다(해당 Java 버전이 아직 설치되지 않은 경우).

Depends: openjdk-21-jdk-headless | java-sdk-headless (>= 21), ...

java-sdk-headless는 Java 21 호환 런타임에서 제공되는 가상 패키지입니다.

관련 정보