Ubuntu 18.04でのデフォルトJAVA_HOME環境変数の設定ファイルの削除
Ubuntu 18.04で文献管理ソフトのJabRefを使おうと起動したところ,Javaのバージョンが古いという警告が出ていた。そのため,新しいOpenJDKをインストールして対応したのだが,相変わらず同じ警告が出ていた。
調べてみたところ,使用するJavaを指定するJAVA_HOME環境変数が勝手に設定されているのがまずいようだ。しかし,自分でJAVA_HOME環境変数を設定した覚えはない。おそらく,何らかのパッケージのインストール時に設定ファイルがインストールされたのだろう。
Linuxの設定ファイルは/etc配下に格納されることが多い。そこで,以下のコマンドで設定箇所を検索した。
grep -R JAVA_HOME= /etc/etc/ca-certificates/update.d/jks-keystore: export JAVA_HOME=/usr/lib/jvm/$jvm /etc/alternatives/javapackager: JAVA_HOME=`cd $BIN_DIR > /dev/null; pwd`/.. /etc/alternatives/javapackager: JAVA_HOME=`dirname "$BIN_DIR"` /etc/profile.d/jdk.sh:export JAVA_HOME=/usr/lib/jvm/java-8-oracle
grepの実行結果を見る限り,/etc/profile.d/jdk.shが勝手に設定しているようだ。Ubuntuでは同名コマンドを管理して切り替えるためにupdate-alternativeという仕組みがある。しかし,どうやらこのファイルはupdate-alternativeで管理されていないのが問題のようだ (参考: java – How can I found where I defined JAVA_HOME – Stack Overflow)。
そこで,jdk.shを含むパッケージの削除を試みる。まず,このファイルを含むパッケージをapt-fileで確認する。
apt-file search jdk.shjava-package: /usr/share/java-package/oracle-jdk.sh
ファイル名が異なっており,このパッケージではなさそうだ。apt-fileで見つからなかったので,dpkgコマンドで検索する。
dpkg --search jdk.shoracle-java8-set-default: /etc/profile.d/jdk.sh
oracle-java8-set-defaultパッケージに含まれているようだ。このパッケージはoracle-java8-installerのパッケージのインストール時に勝手にインストールされたようだ。
apt removeでアンインストールしたのだが,設定ファイルが残っていたようだ。そこで,apt purgeで設定ファイルごと削除する。
sudo apt purge -y oracle-java8-set-default再度検索して,削除されていることを確認する。
dpkg --search jdk.shdpkg-query: no path found matching pattern *jdk.sh*
これでjdk.shが削除された。再起動すると,JAVA_HOMEが設定されていないことを確認できた。
基本的に,JAVA_HOME環境変数は設定していなくても問題ない。ある特定の (場所にインストールした) Javaを使いたい場合など,必要なタイミングでJAVA_HOME環境変数を指定すればよいだろう。

