【環境構築】fish shellを用いたDebian環境にSDKMANおよびJava(JDK)をインストールする方法

前書き:SDKMANはbash(もしくはzsh)前提

SDKMANは、JDK(Java開発環境)やGroovy、Scala、Gradleなどのバージョン管理ツールです。主に、JVM系のツールを管理します。Rubyのrbenv、Pythonのpyenvと同様の立ち位置のツールであり、CLIから任意のバージョンのソフト(例:Java)をインストール/使用/削除できます。

SDKMANの公式サイトに書かれている通り、SDKMANはbashで実装されています。そのため、Login Shellがbashの場合は問題なく動作しますが、fish環境では実行時にエラーが出てしまいます。

本記事では、fish環境にSDKMANをイントールし、SDKMAN経由でJava(JDK)をインストールする方法を紹介します。

                                        

検証環境

                                                

              

SDKMANのインストール

まず、SDKMANの依存パッケージをインストールします。SDKMAN公式サイトに依存パッケージ情報(curl, zip/unzip)が記載されていますが、実際は以下のパッケージ5個をインストールしなければいけません。

次に、SDKMANをインストールします。curlコマンドで、SDKMANをインストールするためのShell Scriptをダウンロードし、その内容をbashで実行します。

上記のコマンドが成功すれば、SDKMANは”$HOME/.sdkman”にインストールされます。

                              

fishとfisherをインストール

この段階でLogin Shellをfish(shell)に変更していない場合、以下の記事を参考に変更してください。また、SDKMANをfishで使うには、fisher(fishプラグインマネージャ)も必要ですので、合わせてインストールしてください。

環境構築:ユーザフレンドリーで補完機能の強力なfishへ移行(Login shellをbashからfishへ移行)

                          

SDKMAN! for fishプラグインのインストール

SDKMANは、bash起動時に設定ファイル(sdkman-init.sh)を読み込みます。この仕組みがfishでは上手く動かないので、別途プラグイン(SDKMAN! for fish)をインストールする事によって、この問題を解決します。

プラグインのインストール手順は、以下の通りです。

                                                                   

                                         

Javaのインストール

ここまでの手順でSDKMANが動作します。ここからは、Javaをインストールする手順を説明します。

まずは、インストールできるJavaのVersionを確認します。前提情報ですが、Javaは複数のベンダが公開しているJDKディストリビューションがあります。いずれのJDKも、マルチプラットフォーム(Win/Mac/Linux)対応であり、OpenJDKをベースにしています。特にこだわりがなければ、リファレンス実装であるJava.netが公開しているJDKを選択しましょう。

以下、OpenJDK(Version13.02)のインストール手順です。

                                                                                                    

環境変数JAVA_HOMEの設定

最後に、JDKのインストール先を環境変数JAVA_HOMEに設定します。

SDKMANがインストールするJDKは、”$HOME/.sdkman/candidates/java/”以下にインストールされます。同ディレクトリ内にcurrentというシンボリックリンクがあり、このリンクはデフォルトJDKのディレクトリを指しています。

そのため、環境変数JAVA_HOMEには”$HOME/.sdkman/candidates/java/current”を設定します。使用するJDKを変更したとしても、SDKMANがcurrentシンボリックリンクが指すディレクトリを変更してくれるため、環境変数JAVA_HOMEの設定を修正する必要がありません。

以下、fishの設定ファイル($HOME/.config/fish/config.fish)に環境変数JAVA_HOMEを設定する例です。

                                     

おすすめ