openjdk-7-jdk をインストールしても、java は更新されません (バージョン 1.6 のままです)

openjdk-7-jdk をインストールしても、java は更新されません (バージョン 1.6 のままです)

Java のアップデートで問題が発生しています。Ubuntu 11.10 を実行しています。

実行できsudo apt-get install openjdk-7-jdk、正常に完了します。1.7javac -versionですが、java -version1.6です。これはこの問題しかし、私の知る限り、問題は道ではありません。

$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

ありがとう。

答え1

アップデート:

非常に良い説明のあるサイトを見つけました:リンク


リンクから:

次に、いくつかの設定を行う必要があります。Debianには、と呼ばれる
さまざまなバージョンのプログラムを維持するためのスクリプトがあります。javaupdate-alternatives

更新代替 --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0/bin/java 1065
アップデート代替 --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0/bin/javac 1065

1065 は指定された優先度です。

インストールを確認するには、次の–configパラメータを使用します
update-alternatives --config java

There are 2 choices for the alternative java (providing /usr/bin/java).

選択パスの優先度ステータス
------------------------------------------------------------
* 0 /usr/lib/jvm/jdk1.7.0/bin/java 1065 自動モード
  1 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 手動モード
  2 /usr/lib/jvm/jdk1.7.0/bin/java 1065 手動モード

また、1065 は 1061 より大きいため、新しくインストールされた Java 7 が私のマシンでデフォルトで使用され java -version
、次のように表示されます。

Javaバージョン「1.7.0」
 Java(TM) SE ランタイム環境 (ビルド 1.7.0-b147)
 Java HotSpot(TM) 64 ビット サーバー VM (ビルド 21.0-b17、混合モード)

ノート: こうするともっと理解しやすくなるかもしれません。

SLES11 # どのJava
java の

SLES11 # アップデート代替 --list java
/usr/lib64/jvm/jre-1.6.0-ibm/bin/java

SLES11 # update-alternatives --display java
java - ステータスは自動です。
 リンクは現在 /usr/lib64/jvm/jre-1.6.0-ibm/bin/java を指しています。
/usr/lib64/jvm/jre-1.6.0-ibm/bin/java - 優先度 1608
 スレーブ rmiregistry: /usr/lib64/jvm/jre-1.6.0-ibm/bin/rmiregistry
 スレーブ tnameserv: /usr/lib64/jvm/jre-1.6.0-ibm/bin/tnameserv
 スレーブ rmid: /usr/lib64/jvm/jre-1.6.0-ibm/bin/rmid
 スレーブ jre_exports: /usr/lib64/jvm-exports/jre-1.6.0-ibm
 スレーブ ポリシーツール: /usr/lib64/jvm/jre-1.6.0-ibm/bin/policytool
 スレーブキーツール: /usr/lib64/jvm/jre-1.6.0-ibm/bin/keytool
 スレーブ jre: /usr/lib64/jvm/jre-1.6.0-ibm
現在の「最適」バージョンは /usr/lib64/jvm/jre-1.6.0-ibm/bin/java です。

man ページには、update-alternatives がディレクトリに使用するパスが記載されています。

SLES11 #パスワード
/etc/代替

SLES11 # ll
lrwxrwxrwx 1 ルート ルート 37 3月 19 06:03 java -> /usr/lib64/jvm/jre-1.6.0-ibm/bin/java
lrwxrwxrwx 1 ルート ルート 2019年3月28日 06:03 jre -> /usr/lib64/jvm/jre-1.6.0-ibm
lrwxrwxrwx 1 ルート ルート 2019年3月28日 06:03 jre_1.6.0 -> /usr/lib64/jvm/jre-1.6.0-ibm
lrwxrwxrwx 1 ルート ルート 36 3月 19 06:03 jre_1.6.0_exports -> /usr/lib64/jvm-exports/jre-1.6.0-ibm
lrwxrwxrwx 1 ルート ルート 36 3月 19 06:03 jre_exports -> /usr/lib64/jvm-exports/jre-1.6.0-ibm
lrwxrwxrwx 1 ルート ルート 2019年3月28日 06:03 jre_ibm -> /usr/lib64/jvm/jre-1.6.0-ibm
lrwxrwxrwx 1 ルート ルート 36 3月 19 06:03 jre_ibm_exports -> /usr/lib64/jvm-exports/jre-1.6.0-ibm

すでにインストールされていて、デフォルトを変更する必要がある場合は、変更を行います。

SLES11 # アップデート代替 --config java

Javaを提供するプログラムは1つだけです
(/usr/lib64/jvm/jre-1.6.0-ibm/bin/java)。設定するものはありません。


元の回答:

/etc/javaまたは、次のようなものを見ると、/etc/java-7-openjdk設定ファイルが表示されるはずです。
java.confまたはjvm.cfg

これは通常、オプションを設定する構成ファイルによって異なります。複数のバージョンの Java を同時にインストールし、起動変数を変更して、どのバージョンをデフォルトの JVM にするかを制御できます。

CentOSからjava.conf

# ベースJREパッケージがインストールされている場合
# (例: java-1.6.0-openjdk):
#JAVA_HOME=$JVM_ROOT/jre

# 開発用JDKパッケージがインストールされている場合
# (例: java-1.6.0-openjdk-devel):
#JAVA_HOME=$JVM_ROOT/java

Ubuntuからjvm.cfg

# java、javac などのオプションとして使用できる JVM のリスト。
# 順序は重要です。このリストの最初はデフォルトの JVM です。
# このファイルとその形式はサポートされていないことに注意してください。
# 将来のリリースでは廃止される予定です。
#
# 任意の場所にあるJVMを選択することもできます。
# "-XXaltjvm=" オプションもありますが、これもサポートされていません
# 将来のリリースでは利用できなくなる可能性があります。
#
-サーバーは認識済み
-クライアント無視
-ホットスポット エラー
-クラシック警告
-ネイティブ エラー
-緑 エラー
-jamvm 既知
-カカオ 既知
-ゼロ 既知
-サメ エイリアス化 -ゼロ

Ubuntuには、というプログラムがあります。update-java-alternatives
これはマニュアルページの先頭の数行です。

名前
       update-java-alternatives - jre/sdk インストールの代替を更新します

概要
       java-alternatives を更新 [--jre] [--plugin] [-t|--test|-v|--verbose]
             -l|--リスト[]
             -s|--セット
             -a|--自動
             -h|-?|--ヘルプ

説明
       update-java-alternativesは、Java言語の1つのランタイムまたは開発キットに属するすべての代替を更新します。パッケージはこれらを提供します。
       代替手段に関する情報は /usr/lib/jvm/..jinfo にあります。
root@ubuntul:/# update-java-alternatives -l  
java-1.6.0-openjdk 1061 /usr/lib/jvm/java-1.6.0-openjdk
-s|--セット
              登録された jre/sdk インストールのすべての代替を、インストールによって提供されるプログラム パスに設定します。

通常、/etc/profile.dJava 起動環境へのリンクも表示されます。

私の推測では、Java ライブラリは同じ場所にインストールされており、構成ファイルは元のバージョンのままデフォルトになっていると思います。新しい JVM パスを指定するだけで済みます。

関連情報