2012/11/13

Amazon Linux上にSun JDK 1.7を入れてみた。

Amazon Linux AMI上でSun JDK 1.7を入れるのにちょっと苦労したのでメモ。

2012/11/14追記:
⇒ Amazon Linux上にSun JDK 1.7を入れてみた。(修正) にて再修正したやり方を書いています。
(下のやり方をした場合、/usr/lib/jvm/jreが正常に作成されないため、JAVA_HOME環境変数が自動設定されなくなります)


Sun Java SE (JDK)のダウンロード

http://www.oracle.com/technetwork/java/javase/downloads/index.html あたりからJavaScriptが動くブラウザを使ってダウンロードしておく。
# w3mやlynxからは上手くいかないので注意。


rpmのインストール

上でダウンロードしてきたrpmをインストールする。
root# rpm -ivh jdk-7u9-linux-x64.rpm


利用するJavaの切り換え



作業前の状態
root# java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.5) (amazon-53.1.11.5.47.amzn1-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)

root# update-alternatives --display java
java - status is auto.
 link currently points to /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java - priority 16000
 slave keytool: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/keytool
 slave orbd: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/orbd
 slave pack200: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/pack200
 slave rmid: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/rmid
 slave rmiregistry: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/rmiregistry
 slave servertool: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/servertool
 slave tnameserv: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/tnameserv
 slave unpack200: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/unpack200
 slave jre_exports: /usr/lib/jvm-exports/jre-1.6.0-openjdk.x86_64
 slave jre: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64
 slave java.1.gz: /usr/share/man/man1/java-java-1.6.0-openjdk.1.gz
 slave keytool.1.gz: /usr/share/man/man1/keytool-java-1.6.0-openjdk.1.gz
 slave orbd.1.gz: /usr/share/man/man1/orbd-java-1.6.0-openjdk.1.gz
 slave pack200.1.gz: /usr/share/man/man1/pack200-java-1.6.0-openjdk.1.gz
 slave rmid.1.gz: /usr/share/man/man1/rmid-java-1.6.0-openjdk.1.gz
 slave rmiregistry.1.gz: /usr/share/man/man1/rmiregistry-java-1.6.0-openjdk.1.gz
 slave servertool.1.gz: /usr/share/man/man1/servertool-java-1.6.0-openjdk.1.gz
 slave tnameserv.1.gz: /usr/share/man/man1/tnameserv-java-1.6.0-openjdk.1.gz
 slave unpack200.1.gz: /usr/share/man/man1/unpack200-java-1.6.0-openjdk.1.gz
Current `best' version is /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java.

インストールしてきたJDKを追加する
root# update-alternatives --install /usr/bin/java java /usr/java/jdk1.7.0_09/bin/java 17009 \
--slave /usr/bin/keytool keytool /usr/java/jdk1.7.0_09/bin/keytool \
--slave /usr/bin/orbd orbd /usr/java/jdk1.7.0_09/bin/orbd \
--slave /usr/bin/pack200 pack200 /usr/java/jdk1.7.0_09/bin/pack200 \
--slave /usr/bin/rmid rmid /usr/java/jdk1.7.0_09/bin/rmid \
--slave /usr/bin/rmiregistry rmiregistry /usr/java/jdk1.7.0_09/bin/rmiregistry \
--slave /usr/bin/servertool servertool /usr/java/jdk1.7.0_09/bin/servertool \
--slave /usr/bin/tnameserv tnameserv /usr/java/jdk1.7.0_09/bin/tnameserv \
--slave /usr/bin/unpack200 unpack200 /usr/java/jdk1.7.0_09/bin/unpack200

root# update-alternatives --display java
java - status is manual.
 link currently points to /usr/java/jdk1.7.0_09/bin/java
/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java - priority 16000
 slave keytool: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/keytool
 slave orbd: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/orbd
 slave pack200: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/pack200
 slave rmid: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/rmid
 slave rmiregistry: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/rmiregistry
 slave servertool: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/servertool
 slave tnameserv: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/tnameserv
 slave unpack200: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/unpack200
 slave jre_exports: /usr/lib/jvm-exports/jre-1.6.0-openjdk.x86_64
 slave jre: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64
 slave java.1.gz: /usr/share/man/man1/java-java-1.6.0-openjdk.1.gz
 slave keytool.1.gz: /usr/share/man/man1/keytool-java-1.6.0-openjdk.1.gz
 slave orbd.1.gz: /usr/share/man/man1/orbd-java-1.6.0-openjdk.1.gz
 slave pack200.1.gz: /usr/share/man/man1/pack200-java-1.6.0-openjdk.1.gz
 slave rmid.1.gz: /usr/share/man/man1/rmid-java-1.6.0-openjdk.1.gz
 slave rmiregistry.1.gz: /usr/share/man/man1/rmiregistry-java-1.6.0-openjdk.1.gz
 slave servertool.1.gz: /usr/share/man/man1/servertool-java-1.6.0-openjdk.1.gz
 slave tnameserv.1.gz: /usr/share/man/man1/tnameserv-java-1.6.0-openjdk.1.gz
 slave unpack200.1.gz: /usr/share/man/man1/unpack200-java-1.6.0-openjdk.1.gz
/usr/java/jdk1.7.0_09/bin/java - priority 17009
 slave keytool: /usr/java/jdk1.7.0_09/bin/keytool
 slave orbd: /usr/java/jdk1.7.0_09/bin/orbd
 slave pack200: /usr/java/jdk1.7.0_09/bin/pack200
 slave rmid: /usr/java/jdk1.7.0_09/bin/rmid
 slave rmiregistry: /usr/java/jdk1.7.0_09/bin/rmiregistry
 slave servertool: /usr/java/jdk1.7.0_09/bin/servertool
 slave tnameserv: /usr/java/jdk1.7.0_09/bin/tnameserv
 slave unpack200: /usr/java/jdk1.7.0_09/bin/unpack200
 slave jre_exports: (null)
 slave jre: (null)
 slave java.1.gz: (null)
 slave keytool.1.gz: (null)
 slave orbd.1.gz: (null)
 slave pack200.1.gz: (null)
 slave rmid.1.gz: (null)
 slave rmiregistry.1.gz: (null)
 slave servertool.1.gz: (null)
 slave tnameserv.1.gz: (null)
 slave unpack200.1.gz: (null)
Current `best' version is /usr/java/jdk1.7.0_09/bin/java.

追加したJDKを標準で利用するように設定する
root# update-alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
 + 1           /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
*  2           /usr/java/jdk1.7.0_09/bin/java

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

作業後の状態
root# java -version
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)



0 件のコメント:

コメントを投稿