javaのインストール
RHELをインストールした際に、javaがすでにインストールされているのを知らずに最新のOracleのjavaをインストールして訳が分からないようになった時。
これまでは、findコマンドでjava関連のファイル探して削除…っていうゴリ押しをしていたのですが…
ちゃんと調べてみると、それでは全然ダメだということが分かりました。(当たり前!!)
そもそも、プリインストールされてるjavaは何者か?!
ということを調べるために以下のことをします。
javaのバージョンを確認
# java -version
…ここにバージョンとどんなJREが入っているか書かれていたけど、メモするの忘れてた
調べた結果、プリインストールされているjavaはGUN javaだそうです。
Oracleのjavaとの互換性が低いので、やはり入れ替えた方がいいのですね!
Wikipediaの説明
http://ja.wikipedia.org/wiki/GNU_Compiler_for_Java
rpmパッケージでインストールされているものがないか確認
#rpm -qa | grep java
java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
grep java でGUN javaのパッケージ名が引っかかるようになっている。
ちなみに、Oracleのjavaのパッケージ名を知りたい時は、以下の通り
#rpm -qa | grep jre
jre-1.6.0_29-fcs
このjava-1.4.2-gcj-compat-1.4.2.0-40jpp.115を削除すれば良さそうだけど…
シンボリックリンクが設定されているみたいなので、その設定を変更する必要がありそう。
ちなみに、削除する方法が全然ダメだと気付いたのがこの記事です。
http://netlog.jpn.org/r271-635/2009/03/linux_rhelgnu_javasunjava.html
全然勉強していなくてすみません…
変更していない状態でalternativesコマンドで設定を確認する。
#alternatives --display java
java -ステータスは自動です。
…
…
…
現在の「最適」バージョンは /usr/lib/jvm/jre-1.4.2-gcj/bin/java です。
これにOracleのJREを選択肢に加える処理がいる。
でも、rpmパッケージでjavaをインストールするとシンボリックリンクが自動で作成されたはず…?
(以前失敗した理由がこれだった気がする。)
ここで、GUNとOracleを共存させる必要性がないからいいかなーと思って、GUNを削除する方向に変えました。
(早くjavaを入れたかったから、またよく確認せずにしてしまった…反省)
#rpm -e --nodeps java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
削除されていることを確認
#rpm -qa | grep java
#java -version
ともに何も表示されないことから、削除は完了。
ようやくJREのインストール
OracleのHPからダウンロードしてきたJREのrpmパッケージを実行します。
実行できるようにする
#chmod a+x jre-6u29-linux-x64-rpm.bin
実行する
#./jre-6u29-linux-x64-rpm.bin
…
Done
で完了!
#java -version
java version "1.6.0_29"
Java(TM) SE Runtime Enviroment …
Java HotSpot(TM) Client VM …
反省点や課題
次回一からjava環境を構築する時に試したいこと。
alternativesコマンドによる、シンボリックリンクの管理
今回はrpmパッケージのインストールでこれまで失敗しすぎて怖気づいてしまいました。
rpmパッケージで先にJREをインストールする。
alternativesコマンドで、javaのシンボリックリンクにOracleのJREを選択肢として増やす。
選択肢を切り替える。
の一連の流れを試してみたいと思います。