#生まれ変わったgvm
今まではgvmというツールを使ってGrails、Groovyなどのプロダクトをインストール管理できましたが、コレが SDKMAN というプロダクトに生まれ変わりました。
今までgvmでは、Groovyファミリーのプロダクトを扱っていましたが、SDKMANでは、その垣根を飛び越え、JVMファミリーなプロダクトを簡単にインストール、管理できるようになりました。
2016/12/14追記
SDKMANでJDK(OracleJava)のインストールも出来るようになりました!
現在、以下の25プロダクトがSDKMANからインストール、管理できます。
見て分かるとおり、プログラミング言語としてScalaやCeylon、Javaな人にはお馴染みのSpring BootやMavenなどもインストールできます。
これらをSDKMANでインストールすれば、バージョンも簡単に切り替えられますし、パスもわざわざ自分で通す必要がありません。
全てのファイルは$HOME/.sdkman
とうディレクトリに格納されるので、システム環境を汚すこともありません。
各プロダクトで新しいバージョンが出るとかなり早めにSDKMANから利用できるようになります。(というかだいたい即日)
#インストール
先ほどのGithubのREADMEに有ります。
2015年12月22日現在ではcurl -s api.sdkman.io | bash
というコマンドを実行すればOKです。
インストールが終わったら、ターミナルの再起動か、source .sdkman/bin/sdkman-init.sh
を実行するだけです。
まぁcurl -s api.sdkman.io | bash
でインストールしたらターミナルを再起動、分からなければOS自体を再起動するだけでOKですね。
もしすでにgvmをインストールしている場合、gvm --help
などを実行すればアップグレードするかどうかを聞いてくれます。
(以下の例を見てもらえればわかりますが、gvmに--help
というコマンドはありません。。。何でもいいので、gvmを動かせばアップデートの確認をして、sdkmanがリリースされてるよ!と教えてくれるわけですね。優しい!)
注意。
sdkmanをgvmからアップグレードする~/.gvm
ディレクトリが 消されます。
基本的には~/.sdkman
というディレクトリに引っ越しするだけですので問題はありませんが、不安な場合はバックアップをとっておいたほうがいいかもしれません。
なお、.gvmディレクトリが消えるのでもしIntelliJ等の統合開発環境からそのディレクトリの中のGrailsやGroovy等を参照している場合は~/.sdkman経由に変更する必要が有ります。環境変数も然り。
以下が私がsdkmanにアップグレードした時のログです。
kkuwana% gvm --help
==== BROADCAST =================================================================
* 14/09/15: Grails 3.0.7 has been released on GVM. #grailsfw
* 14/09/15: Grails 3.1.0.M1 has been released on GVM. #grailsfw
* 14/09/15: Gradle 2.7 has been released on GVM. #gradle
================================================================================
Invalid command: --help
Usage: gvm <command> <candidate> [version]
gvm offline <enable|disable>
commands:
install or i <candidate> [version]
uninstall or rm <candidate> <version>
list or ls <candidate>
use or u <candidate> [version]
default or d <candidate> [version]
current or c [candidate]
outdated or o [candidate]
version or v
broadcast or b
help or h
offline <enable|disable>
selfupdate [force]
flush <candidates|broadcast|archives|temp>
candidate : asciidoctorj, crash, gaiden, glide, gradle, grails, griffon, groovy, groovyserv, jbake, lazybones, springboot, vertx
version : where optional, defaults to latest stable if not provided
eg: gvm install groovy
ATTENTION: A new version of GVM is available...
The current version is 3.0.0, but you have 2.4.1.
Would you like to upgrade now? (Y/n)Y
GVM has been detected on your system...
This update will upgrade GVM to SDKMAN!
Do you want to continue with the upgrade? (Y/n)Y
Thanks for upgrading to...
SSSSSSSSSSSSSSS DDDDDDDDDDDDD KKKKKKKKK KKKKKKK
SS:::::::::::::::SD::::::::::::DDD K:::::::K K:::::K
S:::::SSSSSS::::::SD:::::::::::::::DD K:::::::K K:::::K
S:::::S SSSSSSSDDD:::::DDDDD:::::D K:::::::K K::::::K
S:::::S D:::::D D:::::DKK::::::K K:::::KKK
S:::::S D:::::D D:::::D K:::::K K:::::K
S::::SSSS D:::::D D:::::D K::::::K:::::K
SS::::::SSSSS D:::::D D:::::D K:::::::::::K
SSS::::::::SS D:::::D D:::::D K:::::::::::K
SSSSSS::::S D:::::D D:::::D K::::::K:::::K
S:::::S D:::::D D:::::D K:::::K K:::::K
S:::::S D:::::D D:::::DKK::::::K K:::::KKK
SSSSSSS S:::::SDDD:::::DDDDD:::::D K:::::::K K::::::K
S::::::SSSSSS:::::SD:::::::::::::::DD K:::::::K K:::::K
S:::::::::::::::SS D::::::::::::DDD K:::::::K K:::::K
SSSSSSSSSSSSSSS DDDDDDDDDDDDD KKKKKKKKK KKKKKKK
mmmmmmm mmmmmmm aaaaaaaaaaaaa nnnn nnnnnnnn
mm:::::::m m:::::::mm a::::::::::::a n:::nn::::::::nn
m::::::::::mm::::::::::m aaaaaaaaa:::::an::::::::::::::nn
m::::::::::::::::::::::m a::::ann:::::::::::::::n
m:::::mmm::::::mmm:::::m aaaaaaa:::::a n:::::nnnn:::::n
m::::m m::::m m::::m aa::::::::::::a n::::n n::::n
m::::m m::::m m::::m a::::aaaa::::::a n::::n n::::n
m::::m m::::m m::::ma::::a a:::::a n::::n n::::n
m::::m m::::m m::::ma::::a a:::::a n::::n n::::n
m::::m m::::m m::::ma:::::aaaa::::::a n::::n n::::n
m::::m m::::m m::::m a::::::::::aa:::a n::::n n::::n
mmmmmm mmmmmm mmmmmm aaaaaaaaaa aaaa nnnnnn nnnnnn
Updating SDKMAN...
Successfully upgraded SDKMAN.
Please open a new terminal, or run the following in the existing one:
export SDKMAN_DIR="/home/k-kuwana/.sdkman" && source "/home/k-kuwana/.sdkman/bin/sdkman-init.sh"
touch: `/home/k-kuwana/.gvm/var/delay_upgrade' に touch できません: そのようなファイルやディレクトリはありません
kkuwana%
なんかエラーが出ていますがとりあえず無視。。。
で、メッセージにあるとおりexportを実行します。
kkuwana% export SDKMAN_DIR="/home/k-kuwana/.sdkman" && source "/home/k-kuwana/.sdkman/bin/sdkman-init.sh"
#使ってみる
sdk
という思いっきりなんか別のコマンドとバッティングしないのコレという名前でコマンドが使えるようになっています。
とりあえずhelpを出します。
kkuwana% sdk help
Usage: sdk <command> <candidate> [version]
sdk offline <enable|disable>
commands:
install or i <candidate> [version]
uninstall or rm <candidate> <version>
list or ls <candidate>
use or u <candidate> [version]
default or d <candidate> [version]
current or c [candidate]
outdated or o [candidate]
version or v
broadcast or b
help or h
offline <enable|disable>
selfupdate [force]
flush <candidates|broadcast|archives|temp>
candidate : asciidoctorj, crash, gaiden, glide, gradle, grails, griffon, groovy, groovyserv, jbake, jbossforge, lazybones, springboot, vertx
version : where optional, defaults to latest stable if not provided
eg: sdk install groovy
kkuwana%
gvmと同じっぽいです。
利用可能なGroovyのリストを出してみます。
kkuwana% sdk list groovy
================================================================================
Available Groovy Versions
================================================================================
2.4.4 2.3.1 2.0.8 1.8.3
2.4.3 2.3.0 2.0.7 1.8.2
2.4.2 * 2.2.2 2.0.6 1.8.1
2.4.1 2.2.1 2.0.5 1.8.0
* 2.4.0 2.2.0 2.0.4 1.7.9
2.3.9 2.1.9 2.0.3 1.7.8
2.3.8 2.1.8 2.0.2 1.7.7
* 2.3.7 2.1.7 2.0.1 1.7.6
2.3.6 2.1.6 2.0.0 1.7.5
2.3.5 2.1.5 1.8.9 1.7.4
2.3.4 2.1.4 1.8.8 1.7.3
* 2.3.3 2.1.3 1.8.7 1.7.2
2.3.2 2.1.2 1.8.6 1.7.11
2.3.11 2.1.1 1.8.5 1.7.10
2.3.10 2.1.0 1.8.4 1.7.1
================================================================================
+ - local version
* - installed
> - currently in use
================================================================================
kkuwana%
すでにgvm経由で入れていたGroovyも大丈夫っぽいですね。
一応インストール済みのものでバージョンを切り替えてみます。
コマンドはsdk use {プロダクト名} {バージョン}
です。
まずは今のGroovyのバージョンを確認してみます。
kkuwana% groovy -v
zsh: command not found: groovy
kkuwana%
...さっき出ていたエラーの正体がコレっぽいですね。上のバージョン一覧を見ても分かるとおり、デフォルトで利用するプロダクトの情報が失われてしまっています。
テストも含めてバージョンを指定してみます。
kkuwana% sdk use groovy 2.4.0
Using groovy version 2.4.0 in this shell.
kkuwana% groovy -v
Groovy Version: 2.4.0 JVM: 1.8.0_25 Vendor: Oracle Corporation OS: Linux
kkuwana%
kkuwana% groovy -v
Groovy Version: 2.3.7 JVM: 1.8.0_25 Vendor: Oracle Corporation OS: Linux
kkuwana%
大丈夫ですね。
もう一度利用可能なGroovyの一覧を見てみます。
kkuwana% sdk list groovy
================================================================================
Available Groovy Versions
================================================================================
2.4.4 2.3.1 2.0.8 1.8.3
2.4.3 2.3.0 2.0.7 1.8.2
2.4.2 * 2.2.2 2.0.6 1.8.1
2.4.1 2.2.1 2.0.5 1.8.0
> * 2.4.0 2.2.0 2.0.4 1.7.9
2.3.9 2.1.9 2.0.3 1.7.8
2.3.8 2.1.8 2.0.2 1.7.7
* 2.3.7 2.1.7 2.0.1 1.7.6
2.3.6 2.1.6 2.0.0 1.7.5
2.3.5 2.1.5 1.8.9 1.7.4
2.3.4 2.1.4 1.8.8 1.7.3
* 2.3.3 2.1.3 1.8.7 1.7.2
2.3.2 2.1.2 1.8.6 1.7.11
2.3.11 2.1.1 1.8.5 1.7.10
2.3.10 2.1.0 1.8.4 1.7.1
================================================================================
+ - local version
* - installed
> - currently in use
================================================================================
2.4.0に>
がついて現在利用中にちゃんとなっています。
インストールも試してみます。
kkuwana% sdk list groovy
================================================================================
Available Groovy Versions
================================================================================
2.4.4 2.3.1 2.0.8 1.8.3
2.4.3 2.3.0 2.0.7 1.8.2
2.4.2 * 2.2.2 2.0.6 1.8.1
2.4.1 2.2.1 2.0.5 1.8.0
> * 2.4.0 2.2.0 2.0.4 1.7.9
2.3.9 2.1.9 2.0.3 1.7.8
2.3.8 2.1.8 2.0.2 1.7.7
* 2.3.7 2.1.7 2.0.1 1.7.6
2.3.6 2.1.6 2.0.0 1.7.5
2.3.5 2.1.5 1.8.9 1.7.4
2.3.4 2.1.4 1.8.8 1.7.3
* 2.3.3 2.1.3 1.8.7 1.7.2
2.3.2 2.1.2 1.8.6 1.7.11
2.3.11 2.1.1 1.8.5 1.7.10
2.3.10 2.1.0 1.8.4 1.7.1
================================================================================
+ - local version
* - installed
> - currently in use
================================================================================
kkuwana% sdk install groovy 2.4.4
Downloading: groovy 2.4.4
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 30.9M 100 30.9M 0 0 983k 0 0:00:32 0:00:32 --:--:-- 1092
Installing: groovy 2.4.4
Done installing!
Do you want groovy 2.4.4 to be set as default? (Y/n): Y
Setting groovy 2.4.4 as default.
できました。
ではGroovyのバージョンを見てみましょう。
kkuwana% groovy -v
Groovy Version: 2.4.0 JVM: 1.8.0_25 Vendor: Oracle Corporation OS: Linux
kkuwana%
デフォルトでバージョンが変わっていません。
追記
Twitterで指摘していただきました。これは恐らくこのシェル内ですでにuseでバージョンを指定している事が原因のようです。シェルを別途起動すればOKなはずです。
もう一度リストを見てみましょう。。
kkuwana% sdk list groovy
================================================================================
Available Groovy Versions
================================================================================
* 2.4.4 2.3.1 2.0.8 1.8.3
2.4.3 2.3.0 2.0.7 1.8.2
2.4.2 * 2.2.2 2.0.6 1.8.1
2.4.1 2.2.1 2.0.5 1.8.0
> * 2.4.0 2.2.0 2.0.4 1.7.9
2.3.9 2.1.9 2.0.3 1.7.8
2.3.8 2.1.8 2.0.2 1.7.7
* 2.3.7 2.1.7 2.0.1 1.7.6
2.3.6 2.1.6 2.0.0 1.7.5
2.3.5 2.1.5 1.8.9 1.7.4
2.3.4 2.1.4 1.8.8 1.7.3
* 2.3.3 2.1.3 1.8.7 1.7.2
2.3.2 2.1.2 1.8.6 1.7.11
2.3.11 2.1.1 1.8.5 1.7.10
2.3.10 2.1.0 1.8.4 1.7.1
================================================================================
+ - local version
* - installed
> - currently in use
================================================================================
kkuwana%
インストールは問題ないっぽいですね。
ではまた手動でバージョンを切り替えてみます。
kkuwana% sdk use groovy 2.4.4
Using groovy version 2.4.4 in this shell.
kkuwana% groovy -v
Groovy Version: 2.4.4 JVM: 1.8.0_25 Vendor: Oracle Corporation OS: Linux
kkuwana%
kkuwana%
kkuwana%
kkuwana% sdk use groovy 2.4.0
Using groovy version 2.4.0 in this shell.
kkuwana%
切り替えられました。
まだまだ公開されて間もない(はず)ですので、この辺りも含めてドンドン洗練されていくと思われます。