|
現: 2020-12-26 (土) 15:08:13 yuji |
| + | * alternativesでJavaのバージョン管理 [#raf7cf2d] |
| | | |
| + | alternativesを使用したJavaのバージョン管理を行ってみる。 |
| + | |
| + | ** alternativesとは [#a065556d] |
| + | alternativesとは,同機能のバージョン違いなどのアプリケーションソフトウェアを,切り替えて使えるように管理するためのソフトウェア。~ |
| + | |
| + | ユーザが実際に使用するコマンド等をシンボリックリンクしておいて,そのシンボリックリンクの指す実体を切替えたりすることでこれを実現している。 |
| + | |
| + | ** 複数のJDKのインストール [#k4f416eb] |
| + | 例として,複数のJDKをインストールしておいて,それらからあるバージョンのJava JDKを使用することにしてみます。 |
| + | |
| + | バージョン違いのOracle JDKをインストールするのですが,インストールする時にwgetなどで素直にダウンロードすることは出来ない。これは,ライセンス同意チェックを行っているから。 |
| + | |
| + | [[Java SE - Downloads>http://www.oracle.com/technetwork/java/javase/downloads/index.html]] からJDKのダウンロードURLを確認する。 |
| + | |
| + | JDKをクリックすると,ダウンロード画面が表示される。 |
| + | |
| + | ライセンス規約に同意(Accept License Agreement)をチェックして,そのリンクアドレスをコピーする。~ |
| + | 同意してないとリンクがコピー出来ない。~ |
| + | (今回はインストールに,tar.gzのファイルを使用している。) |
| + | |
| + | wgetでは,次のようにCookieを渡すパラメータを付加すればダウンロード出来る。後は,インストールしておく。 |
| + | # cd work/java |
| + | # wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http://www.oracle.com/; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u45-b14/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u45-linux-x64.tar.gz" -O jdk-8u45-linux-x64.tar.gz |
| + | # cd /usr/java |
| + | # tar xzf ~/work/java/jdk-8u45-linux-x64.tar.gz |
| + | |
| + | 同様にして,他のJDKもダウンロードしてインストールしておく。 |
| + | # cd work/java |
| + | # wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http://www.oracle.com/; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/7u79-b15/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-7u79-linux-x64.tar.gz" -O jdk-7u79-linux-x64.tar.gz |
| + | # cd /usr/java |
| + | # tar xzf ~/work/java/jdk-7u79-linux-x64.tar.gz |
| + | |
| + | ** alternativesに登録 [#u522bc8f] |
| + | alternativesにコマンドを登録しておくことで,バージョンを切り替える事が出来るようになる。 |
| + | |
| + | 登録には,''--install''コマンドを使用する。~ |
| + | この時指定するオプションは,[作成するリンクパス] [管理名] [実体のパス] [優先度]になっている。 |
| + | |
| + | 例:Java7の優先度を1,Java8の優先度を2で登録してみる。~ |
| + | # alternatives --install /usr/bin/java java /opt/jdk1.7.0_79/bin/java 1 |
| + | # alternatives --install /usr/bin/java java /opt/jdk1.8.0_45/bin/java 2 |
| + | # alternatives --config java |
| + | |
| + | There is 2 program that provides 'java'. |
| + | |
| + | Selection Command |
| + | ----------------------------------------------- |
| + | 1 /opt/jdk1.7.0_79/bin/java |
| + | ** 2 /opt/jdk1.8.0_45/bin/java |
| + | Enter to keep the current selection[+], or type selection number: |
| + | |
| + | デフォルトで実行されるのは,後に登録された方が有効になるみたいだ。 |
| + | |
| + | 動作を確認してみる。 |
| + | # 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) |
| + | 確かに,Java 8になっている。 |
| + | |
| + | ** alternativesで作成されるシンボリックリンク [#yd4002b7] |
| + | |
| + | alternativesの情報は,''/var/lib/alternatives/''以下に,保存されている。 |
| + | # cat /var/lib/alternatives/java |
| + | manual |
| + | /usr/bin/java |
| + | |
| + | /opt/jdk1.7.0_79/bin/java |
| + | 1 |
| + | /opt/jdk1.8.0_45/bin/java |
| + | 2 |
| + | |
| + | ''/etc/alternatives/''以下に,上記と同名のシンボリックリンクが作成されている。 |
| + | # ls -l /etc/alternatives/java |
| + | lrwxrwxrwx 1 root root 25 May 24 15:14 /etc/alternatives/java -> /opt/jdk1.8.0_45/bin/java |
| + | |
| + | 実際に使用するコマンドは,上記の''/etc/alternatives/java''を指している。 |
| + | # which java |
| + | /usr/bin/java |
| + | # ls -l /usr/bin/java |
| + | lrwxrwxrwx 1 root root 22 May 24 15:14 /usr/bin/java -> /etc/alternatives/java |
| + | |
| + | ** バージョンの切り替え [#qfbb62c6] |
| + | ''--config''を使用すると,対話形式で使用するバージョンを選択することが出来る。 |
| + | # alternatives --config java |
| + | |
| + | There is 2 program that provides 'java'. |
| + | |
| + | Auswahl Befehl |
| + | ----------------------------------------------- |
| + | 1 /opt/jdk1.7.0_79/bin/java |
| + | *+ 2 /opt/jdk1.8.0_45/bin/java |
| + | |
| + | Eingabe um die vorgegebene Auswahl[+] zu behalten oder geben Sie die Nummer an:1 |
| + | |
| + | 1にしてみると,Java7に変わった。 |
| + | # 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 -l /etc/alternatives/java |
| + | lrwxrwxrwx 1 root root 25 May 25 14:18 /etc/alternatives/java -> /opt/jdk1.7.0_79/bin/java |
| + | |
| + | ** 現在のバージョン,ステータス,優先順位などの確認 [#m1f2a104] |
| + | ''--display''オプションでは,インストール済みのJavaや,ステータス,優先度などが確認出来る。 |
| + | # alternatives --display java |
| + | java - status is manual. |
| + | link currently points to /opt/jdk1.7.0_79/bin/java |
| + | /opt/jdk1.8.0_45/bin/java - priority 2 |
| + | /opt/jdk1.7.0_79/bin/java - priority 1 |
| + | Current `best' version is /opt/jdk1.8.0_45/bin/java. |
| + | |
| + | ステータスが''manual''の場合は,手動で使用するバージョンを選択する必要がある。~ |
| + | もうひとつ''auto''というステータスがありますが,autoの場合は,優先度(priority)の高い方が選択されるようになる。 |
| + | |
| + | ''auto''に切り替えるには,''--auto''オプションを使用する。 |
| + | # alternatives --auto java |
| + | |
| + | これで,優先度(priority)の高いJava8が選択された。 |
| + | # 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) |
| + | |
| + | ステータスも''auto''に切り替わっている。 |
| + | # alternatives --display java |
| + | java - Status ist automatisch. |
| + | Link verweist auf /opt/jdk1.8.0_45/bin/java |
| + | ... |
| + | |
| + | ** 非対話形式で設定 [#w2a13f7e] |
| + | ''--set''オプションを使用すると,非対話形式で変更出来る。 |
| + | # alternatives --set java /opt/jdk1.8.0_45/bin/java |
| + | |
| + | ステータスをautoからmanualに戻したい場合は,--configか--setでバージョンを変えると,自動でmanualに戻る。 |
| + | |
| + | ** alternativesから除外 [#mfc8d3cb] |
| + | alternativesの管理から除外したい場合は,''--remove''を使用する。 |
| + | # alternatives --remove java /opt/jdk1.7.0_79/bin/java |
| + | |
| + | ** JAVA_HOMEの設定 [#d97dc8fd] |
| + | コマンドだけではなく,JAVA_HOMEにも当然使用出来る。むしろこっちの方が利用頻度高い気がする。 |
| + | # alternatives --install /usr/local/java_home java_home /opt/jdk1.7.0_79 1 |
| + | # alternatives --install /usr/local/java_home java_home /opt/jdk1.8.0_45 2 |
| + | # alternatives --config java_home |
| + | |
| + | Es gibt 2 Programme, welche 'java_home' zur Verfügung stellen. |
| + | |
| + | Auswahl Befehl |
| + | ----------------------------------------------- |
| + | 1 /opt/jdk1.7.0_79 |
| + | *+ 2 /opt/jdk1.8.0_45 |
| + | |
| + | ... |
| + | |
| + | # /usr/local/java_home/bin/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) |
| + | |
| + | ''/etc/profile.d/''に登録しておけば,''JAVA_HOME''の切り替えも簡単になる。 |
| + | # echo 'export JAVA_HOME=/usr/local/java_home' >> /etc/profile.d/jdk.sh |