はじめに †
- Web アプリ(Tomcat)から JRuby を使えるように Java 6 をインストールしたい。
- Suse 10は、結構昔のディストリビューションなので、Java 5 まではツールでアップデートできるが、Java 6 は無理
- Suse(といわず最近のLinux) は、java などのコマンドをシンボリックリンクで定義しておき、update-alternatives コマンドでリンク先を変更することによって、コマンドのバージョンアップに対応している
現在の状態の確認 †
grape:~ # update-alternatives --display java
java - status is auto.
link currently points to /usr/lib/jvm/jre-1.5.0-sun/bin/java/usr/lib/jvm/jre-1.5.0-sun/bin/java - priority 1514
slave ktab.1.gz: /usr/share/man/man1/ktab-java-1_5_0-sun.1.gz
slave keytool.1.gz: /usr/share/man/man1/keytool-java-1_5_0-sun.1.gz
slave rmid.1.gz: /usr/share/man/man1/rmid-java-1_5_0-sun.1.gz
slave orbd.1.gz: /usr/share/man/man1/orbd-java-1_5_0-sun.1.gz
slave rmid: /usr/lib/jvm/jre-1.5.0-sun/bin/rmid
slave servertool.1.gz: /usr/share/man/man1/servertool-java-1_5_0-sun.1.gz
slave javaws.1.gz: /usr/share/man/man1/javaws-java-1_5_0-sun.1.gz
slave jre_exports: /usr/lib/jvm-exports/jre-1.5.0-sun
slave javaws: /usr/lib/jvm/jre-1.5.0-sun/bin/javaws
slave policytool: /usr/lib/jvm/jre-1.5.0-sun/bin/policytool
slave orbd: /usr/lib/jvm/jre-1.5.0-sun/bin/orbd
slave rmiregistry: /usr/lib/jvm/jre-1.5.0-sun/bin/rmiregistry
slave tnameserv: /usr/lib/jvm/jre-1.5.0-sun/bin/tnameserv
slave rmiregistry.1.gz: /usr/share/man/man1/rmiregistry-java-1_5_0-sun.1.gz
slave ControlPanel: /usr/lib/jvm/jre-1.5.0-sun/bin/ControlPanel
slave tnameserv.1.gz: /usr/share/man/man1/tnameserv-java-1_5_0-sun.1.gz
slave keytool: /usr/lib/jvm/jre-1.5.0-sun/bin/keytool
slave klist.1.gz: /usr/share/man/man1/klist-java-1_5_0-sun.1.gz
slave servertool: /usr/lib/jvm/jre-1.5.0-sun/bin/servertool
slave java.1.gz: /usr/share/man/man1/java-java-1_5_0-sun.1.gz
slave kinit.1.gz: /usr/share/man/man1/kinit-java-1_5_0-sun.1.gz
slave jre: /usr/lib/jvm/jre-1.5.0-sun
slave policytool.1.gz: /usr/share/man/man1/policytool-java-1_5_0-sun.1.gz
Current `best' version is /usr/lib/jvm/jre-1.5.0-sun/bin/java.
grape:~ #
Java 6 の取得と展開 †
grape:~ # chmod +x jdk-6u16-linux-i586.bin
grape:~ # ./jdk-6u16-linux-i586.bin
(ライセンス条項を読んで y を押す)
grape:~ # mv jdk1.6.0_16 /usr/lib/jvm
update-alternatives の実行 †
- 長いコマンドだし、再利用することもあるかと思うので、スクリプトを作って実行
grape:/usr/lib/jvm # vi updateJava.sh
#!/bin/bash
JDK=/usr/lib/jvm/jdk1.6.0_16
/usr/sbin/update-alternatives\
--remove java $JDK/bin/java
/usr/sbin/update-alternatives\
--install /usr/bin/java java $JDK/bin/java 1616\
--slave /usr/bin/javac javac $JDK/bin/javac\
--slave /usr/bin/javadoc javadoc $JDK/bin/javadoc\
--slave /usr/bin/javah javah $JDK/bin/javah\
--slave /usr/bin/javap javap $JDK/bin/javap\
--slave /usr/bin/jar jar $JDK/bin/jar\
--slave /usr/bin/jarsingner jarsinger $JDK/bin/jarsigner\
--slave /usr/bin/appletviewer appletviewer $JDK/bin/appletviewer\
--slave /usr/bin/keytool keytool $JDK/bin/keytool\
--slave /usr/bin/rmic rmic $JDK/bin/rmic\
--slave /usr/bin/rmid rmid $JDK/bin/rmid\
--slave /usr/bin/rmiregistry rmiregistry $JDK/bin/rmiregistry
grape:/usr/lib/jvm # chmod +x updateJava.sh
grape:/usr/lib/jvm # ./updateJava.sh
- 実行結果の確認
grape:/usr/lib/jvm # java -version
java version "1.6.0_16"
Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
Java HotSpot(TM) Client VM (build 14.2-b01, mixed mode, sharing)
grape:/usr/lib/jvm # javac -version
javac 1.6.0_16
grape:/usr/lib/jvm #
まあいいんじゃないでしょうか
Tomcat を再起動して Java 6 で動いているか確認する †
- ううう・・・Tomcat のことだけを考えたら update-alternatives やる必要なかったか・・・ → Suse10 Tomcat 6.0
- まぁ一応できたって事で良しとしよう
Suse 10 Server