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の前にあることを除いて、何も変更されていないようです。
私がやったことが正しいことを確認する方法はありますか?
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
JDKを/opt/Java/jdk1.8.0_144
にインストールしたと仮定すると:
Javacの代替をインストールする
$ Sudo update-alternatives --install /usr/bin/javac javac /opt/Java/jdk1.8.0_144/bin/javac 1
代替設定を確認/更新します。
$ 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などについて繰り返します。
#!/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
リンクする必要のあるバイナリは他にもたくさんあるので、Sudo update-alternatives --all
のようなものを試して、Java
とjavac
以外のすべての適切な代替を選択することをお勧めします。