環境:
Ubuntu 12.04 LTS (32bit)
Java インストール
Ubuntuの初期状態にはJavaがインストールされていない。 また、インストールできるパッケージにはOracleのものが用意されていない。
$ java The program 'java' can be found in the following packages: * default-jre * gcj-4.6-jre-headless * openjdk-6-jre-headless * gcj-4.5-jre-headless * openjdk-7-jre-headless Try: sudo apt-get install <selected package>
OracleのJavaがインストールできるようにする。この後インストール予定のCDH4がOracleのJDK6に依存しているので今回はJDK6を選択。
sudo apt-get update sudo apt-get install -y python-software-properties sudo add-apt-repository ppa:webupd8team/java // Enterを押す sudo apt-get update sudo apt-get install -y oracle-java6-installer // Oracleのライセンス条項に同意するか聞かれるので<Yes>を選択
JDK7、JDK8をインストールする場合
sudo apt-get install -y oracle-java7-installer sudo apt-get install -y oracle-java8-installer
update-alternatives 設定
update-alternatives を使ってインストールした複数バージョンの Java を簡単に切り替えられるようにする。
インストールされているバージョンの確認
$ update-java-alternatives -l java-6-oracle 1 /usr/lib/jvm/java-6-oracle java-7-oracle 2 /usr/lib/jvm/java-7-oracle java-8-oracle 3 /usr/lib/jvm/java-8-oracle
java7 に切り替え
$ sudo update-java-alternatives -s java-7-oracle
確認
$ java -version java version "1.7.0_45" Java(TM) SE Runtime Environment (build 1.7.0_45-b18) Java HotSpot(TM) Client VM (build 24.45-b08, mixed mode)
java コマンドのパス確認
$ which java /usr/bin/java $ ls -l /usr/bin/java /usr/bin/java -> /etc/alternatives/java $ ls -l /etc/alternatives/java /etc/alternatives/java -> /usr/lib/jvm/java-7-oracle/jre/bin/java $ readlink -f /usr/bin/java /usr/lib/jvm/java-7-oracle/jre/bin/java
javac コマンドのパス確認
$ which javac /usr/bin/javac $ ls -l /usr/bin/java /usr/bin/java -> /etc/alternatives/java $ ls -l /etc/alternatives/javac /etc/alternatives/javac -> /usr/lib/jvm/java-7-oracle/bin/javac $ readlink -f /usr/bin/javac /usr/lib/jvm/java-7-oracle/bin/javac
両方とも/usr/lib/jvm/java-7-oracle/bin
配下を参照してると思ったが javaコマンドの方は非公開 jre 配下の方を参照している。なぜだろう?
java6 に戻す
$ sudo update-java-alternatives -s java-6-oracle
確認
$ java -version java version "1.6.0_45" Java(TM) SE Runtime Environment (build 1.6.0_45-b06) Java HotSpot(TM) Client VM (build 20.45-b01, mixed mode) $ ls -l /etc/alternatives/java /etc/alternatives/java -> /usr/lib/jvm/java-6-oracle/jre/bin/java
JAVA_HOME、PATHの設定
.profile
に環境変数JAVA_HOME
とPATH
を追加する。
JAVA_HOME
に/usr/lib/jvm/java-6-oracle
というように固定パスを書いてしまうと update-alternatives での切り替えが反映されなくなってしまうので以下のように設定する。
echo 'JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")' >> ~/.profile echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.profile source ~/.profile
sed で/usr/lib/jvm/java-6-oracle/bin/javac
を/usr/lib/jvm/java-6-oracle
に書き換えている。
参考:
http://serverfault.com/questions/143786/how-to-determine-java-home-on-debian-ubuntu