UbuntuでOracle JDKの代替インストールを構成する方法は?

UbuntuでOracle JDKの代替インストールを構成する方法は?

Ubuntu 16.04に最新のOracle JDK(8または9)をインストールしたときにいくつかの議論が見つかりました。

私は彼らの方法を次のように要約します。

  • 一部は、 を表現するのにupdate-alternatives使用しますjavajavacjavawsはい)、一部はより多くのコマンドに使用されますが( はいはいはいはい)。どちらが適用するコマンドの完全なリストを提供しているのかわかりませんupdate-alternatives

  • 一部はupdate-java-alternativesはいはい、)、しかし一部は手動インストールでは機能しないと言います。

  • いくつかはupdate-alternativesupdate-java-alternativesはい)

  • 一部の人々は複数の環境変数を変更し、最初の2つの方法が不必要に複雑だと思います(はい、 )

  • update-alternatives一部は同時に複数の環境変数を使用して変更します。はい)

  • 一部はppa:webupd8team / javaからインストールされます(はいはいはい)

どの方法が推奨されるかを知りたいです。

ありがとうございます。

答え1

Javaの代替案を推奨すると言うとき、インストールされているupdate-java-alternativesすべてのJavaプロバイダが必要なインフラストラクチャを提供すると仮定します。これはDebianとその派生製品で提供されるOpenJDKパッケージの場合ですが、必ずしも他のJDKパッケージではなく、手動でインストールされたJDKの場合は該当しません。生成されたOracle JDKパッケージの使用java-package する必要なインフラを提供します。すべてのJavaコマンドを手動で設定するための代替案は、人々の時間の無駄だと思います。 Oracle JREまたはJDKをインストールするにはjava-package

要点update-java-alternativesは、基本JRE / JDKツールの設定が一貫していることを確認することです。理論的には、update-alternatives--slave関係」を使用してこれを実行できます。ただし、これは通常OpenJDKパッケージには適用されません。これは、利用可能なツールのサブセットをインストールでき、update-alternatives問題が解決されないためです。したがって、生成され、update-java-alternativesすべてのツールを処理できます。はいインストールされており、他のものについての苦情はありません。正しく機能するには、update-java-alternativesJRE / JDKパッケージが/usr/lib/jvm例えば .java-1.8.0-openjdk-amd64.jinfo)。 (update-alternatives明らかにRPMベースのディストリビューションはこの問題を解決しますが、まだ詳細については見ていません。)

JAVA_HOMEJava自体には、インストールされている複数のJRE / JDK、つまり環境変数から選択する独自の方法があります。実際に補完的update-java-alternativesですJAVA_HOME。要件に応じて、異なるJRE / JDKを指すように設定することが可能でなければなりません。update-java-alternatives許可するシステム管理者システムは、どのJRE / JDKがデフォルト値であるかを指定します(実際には、パッケージマネージャはどちらがデフォルト値であるかを指定できると考えることができます。これはすべて管理者とユーザーにとって透過的に機能する必要があります)。JAVA_HOMEすべてのユーザーまたは起動スクリプトが特定の環境で使用する必要があるJRE / JDKを指定できるようにします。 Unixスタイルのシステムでは(Windowsとは異なり)、選択項目などを動的に有効にすることはできPATHないため、設定を追跡するためにデフォルト値などが必要な場合(最初に追加)、変更時にリセットすることを覚えておく必要があります。PATHJAVA_HOMEjavajavacPATHJAVA_HOMEjavaJAVA_HOME$JAVA_HOME/binPATH

これらすべてのポイントは私の答えに似ています「update-alternatives」を使用する代わりに環境変数を設定しますか?:システム管理者はupdate-java-alternativesシステムで定義されているデフォルトのJRE / JDKを使用する必要があります(またはパッケージが独自に選択できるようにする)、ユーザーは特定の環境JAVA_HOMEで定義されているJRE / JDKを使用できます。

関連情報