CentOSにJava(JDK)をRPMでインストール+バージョン変更について

スポンサーリンク

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

参考リンク

 LinuxプラットフォームのJDKのインストール

 個人的によく使うrpmコマンド逆引き | Developers.IO