特定の実装(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-runtimejava6-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-packagedefault-jreDebian 8 用 OpenJDK 7Debian 9用OpenJDK 8Debian 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 準拠のランタイムで提供される仮想パッケージです。

関連情報