Fedora Core/SUN JDK

出典: Fukudat.com

Fedora付属のjavaは1.4.2レベルなのと,パフォーマンスがあまりよくない. 最新のJDKを入手してインストールする.

基本的には,http://www.jpackage.org/installation.php に従って導入.

これによって,tomcat5 も 新しい JDK で動作するようになる.

1 インストール

http://java.sun.com/ から Linux 用のJava SE配布パッケージを入手する. NetbeansとかJ2EEとかは不要なので,Java SEだけのパッケージ

jdk-6uX-linux-i586.rpm.bin

をゲットする. 6uX の Xはアップデートレベルで,数字.例えば 6u6なら,JDK 1.6.0 update 6.

それを実行してroot 権限でインストールする.

# sh jdk-6uX-linux-i586.rpm.bin

2 JPackage をインストール

yum を使って導入する.このためにまず http://www.jpackage.org/jpackage17.repo をゲットして /etc/yum.repos.d/ に置く…のだけれど,変数 $releasever が _ とつながっていて,そのままだと上手く動かない.そこで,次のように書き換える.

# Be sure to enable the distro specific repository for your distro below:
# - jpackage-fc for Fedora Core
# - jpackage-rhel for Red Hat Enterprise Linux and derivatives

[jpackage-generic]
name=JPackage (free), generic
mirrorlist=http://www.jpackage.org/jpackage_generic_1.7.txt
failovermethod=priority
gpgcheck=1
gpgkey=http://www.jpackage.org/jpackage.asc
enabled=1

[jpackage-fc]
name=JPackage (free) for Fedora Core $releasever
mirrorlist=http://www.jpackage.org/jpackage_fedora-$releasever.txt
failovermethod=priority
gpgcheck=1
gpgkey=http://www.jpackage.org/jpackage.asc
enabled=1

[jpackage-rhel]
name=JPackage (free) for Red Hat Enterprise Linux $releasever
mirrorlist=http://www.jpackage.org/jpackage_rhel-$releasever.txt
failovermethod=priority
gpgcheck=1
gpgkey=http://www.jpackage.org/jpackage.asc
enabled=0

[jpackage-generic-nonfree]
name=JPackage (non-free), generic
mirrorlist=http://www.jpackage.org/jpackage_generic_nonfree_1.7.txt
failovermethod=priority
gpgcheck=1
gpgkey=http://www.jpackage.org/jpackage.asc
enabled=1

オリジナルのファイルとの変更点は、mirrorlist= の行と,enabled= の行.対象が fedora なのでjpackage-fc セクションがイネーブル(enabled=1)されている.RedHat の場合は,jpackage-rhel セクションをイネーブルする.

次に,jpackage をインストール.

# yum intall java-1.6.0-sun-compat-1.6.0.0X

ここで X は先ほどインストールした JDK のアップデートレベル(数字).

これで完成.バージョンを確かめてみる.

$ which java
/usr/bin/java
$ java -version
Java(TM) SE Runtime Environment (build 1.6.0_01-b06)
Java HotSpot(TM) Client VM (build 1.6.0_01-b06, mixed mode, sharing)

と /usr/bin/java が先ほどインストールした JDK 1.6.0 になった.

3 alternatives でJDKを切替

Fedoraのjavaをアンインストールする必要はない.alternativesコマンドで切替可能.

まず現在どう設定されいるか調べてみる.

$ alternatives --display java
java - status is auto.
 link currently points to /usr/lib/jvm/jre-1.6.0-sun/bin/java
/usr/lib/jvm/jre-1.4.2-gcj/bin/java - priority 1420
 slave jcontrol: (null)
 slave keytool: /usr/lib/jvm/jre-1.4.2-gcj/bin/keytool
 slave orbd: (null)
 slave pack200: (null)
 slave policytool: (null)
 slave rmid: (null)
 slave rmiregistry: /usr/lib/jvm/jre-1.4.2-gcj/bin/rmiregistry
 slave servertool: (null)
 slave tnameserv: (null)
 slave unpack200: (null)
 slave jre_exports: /usr/lib/jvm-exports/jre-1.4.2-gcj
 slave jre: /usr/lib/jvm/jre-1.4.2-gcj
 slave javaws: (null)
 slave java.1: (null)
 slave javaws.1: (null)
 slave keytool.1: (null)
 slave orbd.1: (null)
 slave pack200.1: (null)
 slave policytool.1: (null)
 slave rmid.1: (null)
 slave rmiregistry.1: (null)
 slave servertool.1: (null)
 slave tnameserv.1: (null)
 slave unpack200.1: (null)
/usr/lib/jvm/jre-1.6.0-sun/bin/java - priority 1603
 slave jcontrol: /usr/lib/jvm/jre-1.6.0-sun/bin/jcontrol
 slave keytool: /usr/lib/jvm/jre-1.6.0-sun/bin/keytool
 slave orbd: /usr/lib/jvm/jre-1.6.0-sun/bin/orbd
 slave pack200: /usr/lib/jvm/jre-1.6.0-sun/bin/pack200
 slave policytool: /usr/lib/jvm/jre-1.6.0-sun/bin/policytool
 slave rmid: /usr/lib/jvm/jre-1.6.0-sun/bin/rmid
 slave rmiregistry: /usr/lib/jvm/jre-1.6.0-sun/bin/rmiregistry
 slave servertool: /usr/lib/jvm/jre-1.6.0-sun/bin/servertool
 slave tnameserv: /usr/lib/jvm/jre-1.6.0-sun/bin/tnameserv
 slave unpack200: /usr/lib/jvm/jre-1.6.0-sun/bin/unpack200
 slave jre_exports: /usr/lib/jvm-exports/jre-1.6.0-sun
 slave jre: /usr/lib/jvm/jre-1.6.0-sun
 slave javaws: /usr/lib/jvm/jre-1.6.0-sun/javaws
 slave java.1: /usr/share/man/man1/java-java-1.6.0-sun-compat.1
 slave javaws.1: /usr/share/man/man1/javaws-java-1.6.0-sun-compat.1
 slave keytool.1: /usr/share/man/man1/keytool-java-1.6.0-sun-compat.1
 slave orbd.1: /usr/share/man/man1/orbd-java-1.6.0-sun-compat.1
 slave pack200.1: /usr/share/man/man1/pack200-java-1.6.0-sun-compat.1
 slave policytool.1: /usr/share/man/man1/policytool-java-1.6.0-sun-compat.1
 slave rmid.1: /usr/share/man/man1/rmid-java-1.6.0-sun-compat.1
 slave rmiregistry.1: /usr/share/man/man1/rmiregistry-java-1.6.0-sun-compat.1
 slave servertool.1: /usr/share/man/man1/servertool-java-1.6.0-sun-compat.1
 slave tnameserv.1: /usr/share/man/man1/tnameserv-java-1.6.0-sun-compat.1
 slave unpack200.1: /usr/share/man/man1/unpack200-java-1.6.0-sun-compat.1
Current `best' version is /usr/lib/jvm/jre-1.6.0-sun/bin/java.

この例では,1.4.2がプライオリティ 1420 で,1.6.0がプライオリティ 1603 で導入されていることがわかる.

java を切り替えるには,

# alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
   1           /usr/lib/jvm/jre-1.4.2-gcj/bin/java
*+ 2           /usr/lib/jvm/jre-1.6.0-sun/bin/java

Enter to keep the current selection[+], or type selection number: 

と出るので,1 と入れると元の 1.4.2 が選択される.