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.sh
java-package: /usr/share/java-package/oracle-jdk.sh

ファイル名が異なっており,このパッケージではなさそうだ。apt-fileで見つからなかったので,dpkgコマンドで検索する。

dpkg --search jdk.sh
oracle-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.sh
dpkg-query: no path found matching pattern *jdk.sh*

これでjdk.shが削除された。再起動すると,JAVA_HOMEが設定されていないことを確認できた。

基本的に,JAVA_HOME環境変数は設定していなくても問題ない。ある特定の (場所にインストールした) Javaを使いたい場合など,必要なタイミングでJAVA_HOME環境変数を指定すればよいだろう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です