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
環境変数を指定すればよいだろう。