[Java全般]SDKMAN(旧gvm)でJavaやGrvoovyをインストール

  • 82
    いいね
  • 0
    コメント

生まれ変わったgvm

今まではgvmというツールを使ってGrails、Groovyなどのプロダクトをインストール管理できましたが、コレが SDKMAN というプロダクトに生まれ変わりました。

SDKMAN
SDKMAN(Github)

今までgvmでは、Groovyファミリーのプロダクトを扱っていましたが、SDKMANでは、その垣根を飛び越え、JVMファミリーなプロダクトを簡単にインストール、管理できるようになりました。

2016/12/14追記
SDKMANでJDK(OracleJava)のインストールも出来るようになりました!
現在、以下の25プロダクトがSDKMANからインストール、管理できます。

Name 最新バージョン(on SDKMAN) 公式
Activator 1.3.10
Ant 1.9.7 https://ant.apache.org/
AsciidoctorJ 1.5.4.1 http://asciidoctor.org/
Ceylon 1.3.1 http://ceylon-lang.org/
CRaSH 1.3.0 http://www.crashub.org/
Gaiden 1.1 http://kobo.github.io/gaiden/
Glide 0.9.2 http://glide-gae.appspot.com/
Gradle 3.2.1 http://gradle.org/
Grails 3.2.3 https://grails.org/
Griffon 1.5.0 http://griffon-framework.org/
Groovy 2.4.7 http://www.groovy-lang.org/
GroovyServ 1.1.0 https://kobo.github.io/groovyserv/
Java 8u111 http://www.oracle.com/technetwork/java/javase
JBake 2.5.0 http://jbake.org/
JBossForge 2.17.0.Final http://forge.jboss.org/
Kobalt 0.720 http://beust.com/kobalt
Kotlin 1.0.5-2 https://kotlinlang.org/
Lazybones 0.8.3 https://github.com/pledbrook/lazybones/
Leiningen 2.7.1 http://leiningen.org/
Maven 3.3.9 https://maven.apache.org/
sbt 0.13.13 http://www.scala-sbt.org/
Scala 2.12.0 http://www.scala-lang.org/
SpringBoot 1.4.2.RELEASE http://projects.spring.io/spring-boot/
Sshoogr 0.9.25 https://github.com/aestasit/sshoogr
Vert.x 3.3.3 http://vertx.io/

見て分かるとおり、プログラミング言語として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% 

切り替えられました。
まだまだ公開されて間もない(はず)ですので、この辺りも含めてドンドン洗練されていくと思われます。