.deb 패키지가 Java에 의존한다는 것을 나타낼 수 있지만 어떤 구현(예: OpenJDK, IcedTea, Oracle)은 지정할 수 없습니까?

.deb 패키지가 Java에 의존한다는 것을 나타낼 수 있지만 어떤 구현(예: OpenJDK, IcedTea, Oracle)은 지정할 수 없습니까?

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

.deb 패키지에 Java 구현이 필요함을 표시할 수 있는 방법이 있습니까? 그렇다면 구현이 설치되지 않은 경우 어떻게 처리합니까?

답변1

.deb패키지에 Java 런타임 환경(JDK가 아닌 JVM)이 필요함 을 나타내는 표준 방법은 default-jre또는 default-jre-headless(GUI가 있는 프로그램의 경우 전자, GUI가 필요하지 않은 경우 후자)에 대한 종속성을 지정하는 것입니다. 적절한 버전 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를 처리합니다.만약에를 사용하여 처리되었습니다 java-package. default-jre기본 JRE에 따라 다릅니다(데비안 8용 OpenJDK 7,데비안 9용 OpenJDK 8,데비안 10용 OpenJDK 11), 따라서 다른 JRE가 설치되어 있지 않으면 JRE가 설치됩니다. 다양한 JRE 패키지는 java-runtime지원 수준에 따라 변형을 제공하므로 이에 따라 사용자가 또 다른 JRE를 설치하도록 강요하는 대신 적절하게 패키지된 기존의 호환 가능한 JRE가 사용됩니다.

수동으로 설치되고 패키지되지 않은 Oracle JRE를 포함하여 설치된 JRE를 실제로 지원하려면 패키지의 "권장 사항" 스탠자에서 위의 내용만 사용한 다음 java시작 스크립트에서 실행해 보세요. 이상적으로는 설치 시( postinstJRE가 발견되지 않은 경우 설치에 실패하지 않도록 해야 함) 및 실행해야 할 때마다 JRE가 있는지 확인해야 합니다. java패키지에 initscript가 포함되어 있으면 복잡해질 수 있습니다. 또는 시스템 단위 등(무엇인가 잘못되었음을 관리자에게 알리는 방법이 분명하지 않다는 의미에서 복잡하며, 확실히 알아차리고 이해할 수 있는 방식입니다).

답변2

이것을 제어 파일에 삽입하면 최소 Java 버전을 지정할 수 있으며, 적절한 Java 버전이 아직 설치되지 않은 경우 설치할 Java 구현도 지정할 수 있습니다.

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

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

관련 정보