SDKMANが気になっていたので、インストールしてみました。
SDKMANとは
Unixベースで、複数のSDKのバージョンを管理するためのツール。 SDKのインストールやバージョンの切替え、削除、SDKの一覧表示などをCLIベースで提供しています。
SDKMANの特徴
開発者による、開発者のために
HOMEやPATH環境変数の変更や、アーカイブの展開、目的のバージョンをダウンロードページで探し回る必要がありません。
マルチプラットフォーム
Mac OSX、Linux、Cygwin、Solarisや FreeBSDといったUnixベースのシステムで動作可能です。
Javaの全てに行き届く
Java,Groovy,Sacla,Kotlinと言ったJVMで動作するSDKをインストールできます。 Ant,Gradle,Grails,Maven,SBT,Spark,SpringBoot,Vert.Xなどもサポートします。
軽量である
bashで実装されており、curlコマンドと、zip/unzipがあれば動作可能です。 ZSHでも同様に動作します。
早速、インストールしてみる。
さて、SDKMANをインストールしてみます。 インストーラをダウンロードして実行。
$ curl -s "https://get.sdkman.io" | bash ・・・・(省略) Download script archive... ######################################################################## 100.0% Extract script archive... Install scripts... Set version to 5.7.4+362 ... Attempt update of interactive bash profile on regular UNIX... Added sdkman init snippet to /home/vagrant/.bashrc Attempt update of zsh profile... Updated existing /home/vagrant/.zshrc All done! Please open a new terminal, or run the following in the existing one: source "/home/vagrant/.sdkman/bin/sdkman-init.sh" Then issue the following command: sdk help Enjoy!!!
ファイルをロードする
$ source "/home/vagrant/.sdkman/bin/sdkman-init.sh"
インストールが成功しているかの確認のために、バージョンを出力する。
$ sdk version ==== BROADCAST ================================================================= * 2020-04-03: Grails 4.0.3 released on SDKMAN! #grailsfw * 2020-04-03: Micronaut 1.3.4 released on SDKMAN! #micronautfw * 2020-04-02: Micronaut 2.0.0.M2 released on SDKMAN! #micronautfw ================================================================================ SDKMAN 5.7.4+362
インストール完了!!
インストールは簡単でした。
候補の一覧を表示
sdk list java でインストール可能なJDKの一覧を表示します。 javaの部分をgroovyとするとインストール可能なgroovyが出てきます。
$ sdk list java ================================================================================ Available Java Versions ================================================================================ Vendor | Use | Version | Dist | Status | Identifier -------------------------------------------------------------------------------- AdoptOpenJDK | | 14.0.0.j9 | adpt | | 14.0.0.j9-adpt | | 14.0.0.hs | adpt | | 14.0.0.hs-adpt | | 13.0.2.j9 | adpt | | 13.0.2.j9-adpt | | 13.0.2.hs | adpt | | 13.0.2.hs-adpt | | 12.0.2.j9 | adpt | | 12.0.2.j9-adpt | | 12.0.2.hs | adpt | | 12.0.2.hs-adpt | | 11.0.6.j9 | adpt | | 11.0.6.j9-adpt | | 11.0.6.hs | adpt | | 11.0.6.hs-adpt | | 8.0.242.j9 | adpt | | 8.0.242.j9-adpt ・・・(省略)・・・
JDKをインストール
sdk install java バージョン-提供元 を指定してJavaをインストールします。
$ sdk install java 14.0.0-open Downloading: java 14.0.0-open In progress... ######################################################################## 100.0% Repackaging Java 14.0.0-open... Done repackaging... Installing: java 14.0.0-open Done installing! Setting java 14.0.0-open as default.
JDKの切替え
sdk use target version で使用するJDKを切り替えることが出来ます。 javaのopenjdk 14.0.0 に切り替える場合は、sdk use java 14.0.0-open で実行します。
$ sdk use java 14.0.0-open Using java version 14.0.0-open in this shell.
sdk use は、ローカル環境に対象のバージョンがインストールされている前提のため、インストールしていない バージョンへの切替はエラーになります。
$ sdk use java 13.0.2-open Stop! java 13.0.2-open is not installed.
JDKの削除
ローカル環境からJDKを削除するには、sdk uninstall を実行します。
$ sdk uninstall java 13.0.2.j9-adpt Unselecting java 13.0.2.j9-adpt... Uninstalling java 13.0.2.j9-adpt...
使用したいJDKがない時は手動でインストールしてSDKMANに管理させる
listでJDKの一覧は出力されるのですが、使用するバージョンがない場合は、SDKMANからインストールすることが出来ません。
そうなると、自分でJDKをインストールしないといけなくなります。 そうなると、HOMEやPATH環境変数の切替えが面倒ですよね??
そんな時は、無理やりSDKMANに管理させる方法があります。 (多分、非公式??)
Javaであれば、$HOME/.sdkman/candidates/java 配下に、JDKをインストールします。 今回は、JDK9+181 をインストールしてみます。 JDKを配置するディレクトリ名は、バージョン-dist に合合わせる方が良いので、JDK9+181であれば、9.0.181-open とします。
$ cd $HOME/.sdkman/candidates/java $ wget https://download.java.net/openjdk/jdk9/ri/jdk-9+181_linux-x64_ri.zip
ダウンロードしたJDKを展開し、9.0.181-openフォルダに配置します。
バージョン-dist配下に、binフォルダなどがある状態にします。
$ unzip jdk-9+181_linux-x64_ri.zip $ mv java-se-9-ri/jdk-9 9.0.181-open $ rm -rf java-se-9-ri jdk-9+181_linux-x64_ri.zip
sdk list java で一覧を出力し、インストールされたことを確認します。
手動でインストールしたものには、Status欄が「local only」となっています。
$ sdk list java ・・・(省略)・・・ Java.net | | 15.ea.17 | open | | 15.ea.17-open | >>> | 14.0.0 | open | installed | 14.0.0-open | | 13.0.2 | open | | 13.0.2-open | | 12.0.2 | open | | 12.0.2-open | | 11.0.6 | open | | 11.0.6-open | | 10.0.2 | open | | 10.0.2-open | | 9.0.181 | open | local only | 9.0.181-open | | 9.0.4 | open | | 9.0.4-open ・・・(省略)・・・
手動インストールしたJDK9+181に切り替えが出来ることを確認します。
$ sdk use java 9.0.181-open Setting java version 9.0.181-open as default. Using java version 9.0.181-open in this shell. $ sdk current java Using java version 9.0.181-open $ java --version openjdk 9 OpenJDK Runtime Environment (build 9+181) OpenJDK 64-Bit Server VM (build 9+181, mixed mode)
出来た!!!
まとめ
SDKMANのインストールから使い方を理解できました。 リストに出力されたバージョンはオンラインでインストール出来るので良いが、リストに表示されていない バージョンがオンラインでインストールできないのはチョット残念。(実は他のやり方があるとか??) 業務で使えなさそうと思ったが、手動でインストールして管理させる方法を見つけることができたので、 Javaの切替が簡単に出来るだけでも十分に良いツールだと思うので、ガリガリ使いたい。
ただ、どうにかリストに載っていないバージョンをオンラインでインストールできないだろうか・・・