hogashi.*

日記から何から。

Ubuntu16.04にJavaをインストールしてjenvで管理する

TL;DR

 Ubuntu16.04 に Java をインストールして jenv で管理する。
 jenv ではなく、デフォルトの alternatives を使うこともできる(らしい)。やっていません。

手順

jenv のインストール

 jenv は anyenv でインストールした。 anyenv のインストールは省略。

$ anyenv install jenv
$ exec $SHELL -l   # jenv へのパスを環境変数PATHに反映
java のインストール

 java 8 と 9 をインストールした。 apt-getopenjdk-8-jdkopenjdk-9-jdk を入れておいて、後から jenv add して管理する。

$ sudo apt-get install openjdk-8-jdk openjdk-9-jdk

 なんか update-alternatives: /usr/bin/jlink (jlink) を提供するために自動モードで /usr/lib/jvm/java-9-openjdk-amd64/bin/jlink を使います とかって警告がずらっと出たりするけど、これは多分システム側で *env 的なことをする alternatives なるソフトウェアがログを出しているだけっぽいので、やってくれてるなって感じで見守る。使いたい人はそちらを使えば良さそう、僕はバイナリをひとつひとつやるのは大変そうかなって思ったので jenv でやります。

jenv に登録

 インストールできたら、 jenv に管理する java のパスを追加する。
 それぞれのバージョンがどこにインストールされているのかは、 which java したり、シンボリックリンクを追ったりすれば多分たどり着ける。今回は alternatives が頑張ってくれているので、巡り巡って /etc/alternativesシンボリックリンクがあり、そこから実ファイルへ参照していた。

$ which java
/usr/bin/java
$ ls -l /usr/bin/java
lrwxrwxrwx 1 root root 22  3月 11 22:01 /usr/bin/java -> /etc/alternatives/java
$ ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 42  3月 11 22:01 /etc/alternatives/java -> /usr/lib/jvm/java-9-openjdk-amd64/bin/java  # ゴール
$ ls /usr/lib/jvm
# (略)
java-9-openjdk-amd64  # java9 の実ファイルの場所
java-8-openjdk-amd64  # java8 の実ファイルの場所

 見つけたパスを追加していく。でき次第設定して完了。

$ jenv add /usr/lib/jvm/java-8-openjdk-amd64
$ jenv add /usr/lib/jvm/java-9-openjdk-amd64
$ jenv versions  # 確認
* system (set by /home/ほげ/.anyenv/envs/jenv/version)
  1.8
  1.8.0.151
  9-internal
  openjdk64-1.8.0.151
  openjdk64-9-internal
$ jenv global 1.8  # java 8 に設定
$ java -version  # 確認
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-0ubuntu0.16.04.2-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)
$ javac -version  # 確認2
javac 1.8.0_151

 一括で切り替えができて便利。 java 8 と 9 を切り替えまくるときがあるかどうかは不明。