CentOSにRPMを使用してJavaをインストールする方法です。alternativesか環境変数でバージョンを切り替えます。
JDKのダウンロード
前回の記事 でも書きましたが、OracleJDK を wget や curl でダウンロードするには、ライセンス同意チェックの Cookie をつけてやる必要があります。rpm
ファイルを選択して下さい。
$ wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.rpm" -O jdk-7u79-linux-x64.rpm $ wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jdk-8u45-linux-x64.rpm" -O jdk-8u45-linux-x64.rpm $ ls jdk-7u79-linux-x64.rpm jdk-8u45-linux-x64.rpm
curl の場合は次の通りです。
$ curl -OL --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jdk-8u45-linux-x64.rpm
ダウンロード先:
Java SE - Downloads | Oracle Technology Network
Java Archive Downloads - Java SE 8
JDKのインストール
最初にJDK7をインストールします。/usr/java
にインストールされ、/usr/bin
にコマンドが作成されています。
$ sudo rpm -ivh jdk-7u79-linux-x64.rpm $ java -version java version "1.7.0_79" Java(TM) SE Runtime Environment (build 1.7.0_79-b15) Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode) $ ls /usr/bin/ja jar java javac javadoc javaws $ ls -l /usr/java/ 合計 4 lrwxrwxrwx. 1 root root 16 5月 28 17:54 2015 default -> /usr/java/latest drwxr-xr-x. 8 root root 4096 5月 28 17:54 2015 jdk1.7.0_79 lrwxrwxrwx. 1 root root 21 5月 28 17:54 2015 latest -> /usr/java/jdk1.7.0_79
次にJDK8をインストールをインストールします。バージョンが切り替わってコマンドも少し増えています。
$ sudo rpm -ivh jdk-8u45-linux-x64.rpm $ java -version java version "1.8.0_45" Java(TM) SE Runtime Environment (build 1.8.0_45-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode) $ ls /usr/bin/ja jar java javac javafxpackager javap javaws jarsigner java-rmi.cgi javadoc javah javapackager $ ll /usr/java/ 合計 8 lrwxrwxrwx. 1 root root 16 5月 28 17:54 2015 default -> /usr/java/latest drwxr-xr-x. 8 root root 4096 5月 28 17:54 2015 jdk1.7.0_79 drwxr-xr-x. 9 root root 4096 5月 28 17:56 2015 jdk1.8.0_45 lrwxrwxrwx. 1 root root 21 5月 28 17:56 2015 latest -> /usr/java/jdk1.8.0_45
ちなみにyum
コマンドでインストールする場合は次の通りです。
$ sudo yum localinstall jdk-7u79-linux-x64.rpm $ sudo yum localinstall jdk-8u45-linux-x64.rpm
JAVA_HOMEを設定する
JAVA_HOMEには/usr/java/default
をセットしておきます。最新のJDKをインストールした時に自動で切り替わるためです。古いバージョンを使用したい場合は手動で切り替える必要があります。
$ echo 'export JAVA_HOME=/usr/java/default' >> /etc/profile.d/jdk.sh $ source /etc/profile.d/jdk.sh
JDKのバージョン変更
rpmでインストールした場合、rpmコマンドではバージョンを切り替える方法がありません。そのため 前回の記事 で紹介したalternatives
を使用します。実は/usr/bin
以下に作成されたコマンドはalternatives
のシンボリックリンクになってます。
$ ll /usr/bin/ja* lrwxrwxrwx. 1 root root 21 5月 28 17:56 2015 /usr/bin/jar -> /etc/alternatives/jar lrwxrwxrwx. 1 root root 27 5月 28 17:56 2015 /usr/bin/jarsigner -> /etc/alternatives/jarsigner lrwxrwxrwx. 1 root root 22 5月 28 17:56 2015 /usr/bin/java -> /etc/alternatives/java lrwxrwxrwx. 1 root root 30 5月 28 17:56 2015 /usr/bin/java-rmi.cgi -> /etc/alternatives/java-rmi.cgi lrwxrwxrwx. 1 root root 23 5月 28 17:56 2015 /usr/bin/javac -> /etc/alternatives/javac lrwxrwxrwx. 1 root root 25 5月 28 17:56 2015 /usr/bin/javadoc -> /etc/alternatives/javadoc lrwxrwxrwx. 1 root root 32 5月 28 17:56 2015 /usr/bin/javafxpackager -> /etc/alternatives/javafxpackager lrwxrwxrwx. 1 root root 23 5月 28 17:56 2015 /usr/bin/javah -> /etc/alternatives/javah lrwxrwxrwx. 1 root root 23 5月 28 17:56 2015 /usr/bin/javap -> /etc/alternatives/javap lrwxrwxrwx. 1 root root 30 5月 28 17:56 2015 /usr/bin/javapackager -> /etc/alternatives/javapackager lrwxrwxrwx. 1 root root 24 5月 28 17:56 2015 /usr/bin/javaws -> /etc/alternatives/javaws
alternatives
の java にJDK7を登録して変更します。
$ sudo alternatives --install /usr/bin/java java /usr/java/jdk1.7.0_79/jre/bin/java 1 $ sudo alternatives --config java 2 プログラムがあり 'java' を提供します。 選択 コマンド ----------------------------------------------- *+ 1 /usr/java/jdk1.8.0_45/jre/bin/java 2 /usr/java/jdk1.7.0_79/jre/bin/java Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2
バージョンが変更されました。
$ java -version java version "1.7.0_79" Java(TM) SE Runtime Environment (build 1.7.0_79-b15) Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
もうひとつの方法として環境変数を使用することも出来ます。上記のJAVA_HOMEを設定した/etc/profile.d/jdk.sh
に以下を追記してください。
$ echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile.d/jdk.sh
これによって、/usr/bin
より$JAVA_HOME/bin
が優先されるようになりますので、JAVA_HOMEを切り替えればコマンドのバージョンが変更されるようになります。こっちの方が便利ですかね。
JDKのアンインストール
パッケージをアンインストールする場合は-e
オプションを使用します。
$ sudo rpm -e jdk-1.7.0_79-fcs.x86_64
ここではパッケージの名前を指定するのですがインストールしたRPMパッケージと名前が変わってますね。調べるには-qa
オプションを使用するとインストールされたパッケージ一覧が表示されます。
$ rpm -qa | grep jdk jdk-1.7.0_79-fcs.x86_64 jdk1.8.0_45-1.8.0_45-fcs.x86_64