web-dev-qa-db-ja.com

コマンドupdate-alternatives --config javaの使用方法

Linux Debian(Squeeze)にApache Solrをインストールしています。 Sun-Java jdk 1stをインストールするように指示されました。次に、特定のJava(Sun-Java)がデフォルトのランタイムであることを確認するためにコマンドSudo update-alternatives --config Javaを使用する必要があると言われます。しかし、このコマンドを実行すると、次の結果が得られます。

There are 3 choices for the alternative Java (providing /usr/bin/Java).

  Selection    Path                                      Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/Java-6-openjdk/jre/bin/Java   1061      auto mode
  1            /usr/bin/gij-4.4                           1044      manual mode
  2            /usr/lib/jvm/Java-6-openjdk/jre/bin/Java   1061      manual mode
  3            /usr/lib/jvm/Java-6-Sun/jre/bin/Java       63        manual mode

Press enter to keep the current choice[*], or type selection number:

では、デフォルトのランタイムとしてSun-Javaを使用するには、どの番号を選択する必要がありますか?また、自動モードと手動モードの正確な意味は何ですか?上記の3を選択してupdate-alternativeコマンドを実行すると、上記と同じ出力が表示されますが、*が3の前にあることを除いて、何も変更されていないようです。

私がやったことが正しいことを確認する方法はありますか?

55
user1680916

update-alternativesは、JDKに応じてすべての要素を強制的に更新するため、この場合は問題があります。

この特定の目的のために、パッケージJava-commonにはupdate-Java-alternativesというツールが含まれています。

それを使用するのは簡単です。最初に、マシンで使用可能なJDKインストールをリストします。

root@mylaptop:~# update-Java-alternatives -l
Java-1.7.0-openjdk-AMD64 1071 /usr/lib/jvm/Java-1.7.0-openjdk-AMD64
Java-1.8.0-openjdk-AMD64 1069 /usr/lib/jvm/Java-1.8.0-openjdk-AMD64

次に、1つを選択します。

root@mylaptop:~# update-Java-alternatives -s Java-1.7.0-openjdk-AMD64
15
jopasserat

JDKを/opt/Java/jdk1.8.0_144にインストールしたと仮定すると:

  1. Javacの代替をインストールする

    $ Sudo update-alternatives --install /usr/bin/javac javac /opt/Java/jdk1.8.0_144/bin/javac 1
    
  2. 代替設定を確認/更新します。

    $ Sudo update-alternatives --config javac
    

javacの代替が1つしかない場合は、その旨のメッセージが表示されます。それ以外の場合は、新しいJDKのオプションを選択します。

すべてが正しくセットアップされていることを確認するには:

$ which javac
/usr/bin/javac

$ ls -l /usr/bin/javac
lrwxrwxrwx 1 root root 23 Sep  4 17:10 /usr/bin/javac -> /etc/alternatives/javac

$ ls -l /etc/alternatives/javac
lrwxrwxrwx 1 root root 32 Sep  4 17:10 /etc/alternatives/javac -> /opt/Java/jdk1.8.0_144/bin/javac

そして最後に

$ javac -version
javac 1.8.0_144

必要に応じて、Java、keytool、jarなどについて繰り返します。

9

これは私がjdkをインストールする方法です

#!/bin/bash
cd /opt/
Sudo mkdir Java
Sudo tar -zxvf ~/Downloads/jdk-8u192-linux-x64.tar.gz
Sudo ln -s  jdk1.8.0_192 current
for file in /opt/Java/current/bin/*
do
   if [ -x $file ]
   then
      filename=`basename $file`
      Sudo update-alternatives --install /usr/bin/$filename $filename $file 20000
      Sudo update-alternatives --set $filename $file
      #echo $file $filename
   fi
done
7
user2733648

リンクする必要のあるバイナリは他にもたくさんあるので、Sudo update-alternatives --allのようなものを試して、Javajavac以外のすべての適切な代替を選択することをお勧めします。

1
hinnarksen