SDKMAN!的安装与使用
2018-02-05 12:48:19 +08 字数:1271 标签: Linux在使用Linux系统作为开发环境时,偶尔会遇到需要使用最新版软件的问题。 然而,如果使用Debian的stable或Ubuntu的LTS时,却不能用apt简单如愿。 默认包管理,要对发行版的安全与稳定负责,所以策略保守。 最新版软件,往往要过一段(很长的)时间才能使用。
这时就需要有一种用户级的包管理器,可以安装最新版软件,类似MacOS X的Homebrew。 SDKMAN!是一个不错的尝试,至少对一些JVM的常用软件来说。
安装SDKMAN! ¶
秉承Homebrew的风范,SDKMAN!也可以在联网环境下,用一行命令简单安装。
curl -s "https://get.sdkman.io" | bash
虽然官方是这样推荐的,但为了安全,不应该直接运行任何未知的代码。
可以使用以下的两条命令,先缓存安装代码为脚本sdkman.bash
,打开欣赏一下,再执行安装。
curl -sSL "https://get.sdkman.io" > /tmp/sdkman.bash
bash /tmp/sdkman.bash
这个脚本会自动修改.bashrc
或.zshrc
。
执行完后,打开新的Bash或Zsh,或者重新source
配置文件,就可以使用了。
使用SDKMAN! ¶
更多用法,详见《Usage - SDKMAN!》。
也可使用sdk help
直接查看帮助。
安装软件 ¶
sdk install gradle
直接使用install
,是安装最新稳定版。
当然,也可以指定一些旧的版本。
sdk install gradle 2.14.1
展示已安装的版本 ¶
$ sdk list gradle
================================================================================
Available Gradle Versions
================================================================================
4.5-rc-2 4.3-rc-1 3.2.1 2.13
4.5-rc-1 4.3 3.2 2.12
> * 4.5 4.2.1 3.1 2.11
4.4.1 4.2-rc-2 3.0 2.10
4.4-rc-6 4.2-rc-1 2.9 2.1
4.4-rc-5 4.2 2.8 2.0
4.4-rc-4 4.1 2.7 1.9
4.4-rc-3 4.0.2 2.6 1.8
4.4-rc-2 4.0.1 2.5 1.7
4.4-rc-1 4.0 2.4 1.6
4.4 3.5.1 2.3 1.5
4.3.1 3.5 2.2.1 1.4
4.3-rc-4 3.4.1 2.2 1.3
4.3-rc-3 3.4 * 2.14.1 1.2
4.3-rc-2 3.3 2.14 1.12
================================================================================
+ - local version
* - installed
> - currently in use
================================================================================
上面的命令行列表中,列出了所有可用的gradle版本。
4.5和2.14.1前面都有*
,表示已安装;4.5前面的>
,表示当前版本。
改变软件版本 ¶
改变版本分两种情况。
一种是改变默认版本,在所有新开的Bash中都生效。
$ sdk default gradle 2.14.1
Default gradle version set to 2.14.1
一种是临时改变版本,仅在当前的Bash中生效。
$ sdk use gradle 2.14.1
Using gradle version 2.14.1 in this shell.
use
不仅能临时切换版本,还能自动安装未安装的版本。
$ sdk use gradle 3.5.1
Stop! gradle 3.5.1 is not installed.
Do you want to install it now? (Y/n): y
Downloading: gradle 3.5.1
In progress...
######################################################################## 100.0%
Installing: gradle 3.5.1
Done installing!
Using gradle version 3.5.1 in this shell.
查看当前版本 ¶
$ sdk current gradle
Using gradle version 3.5.1
可用软件 ¶
与Homebrew不同的是,SDKMAN!还未成气候。 (截止至2018年1月)可用软件仅24个,还全是JVM系的,列表如下:
- Ant
- AsciidoctorJ
- Ceylon
- CRaSH
- Gaiden
- Glide
- Gradle
- Grails
- Griffon
- Groovy
- GroovyServ
- Java
- JBake
- Kobalt
- Kotlin
- kscript
- Lazybones
- Leiningen
- Maven
- sbt
- Scala
- Spring Boot
- Sshoogr
- Vert.x
详见《Available SDKs - SDKMAN!》。
CLI下,可以使用sdk list
来查看所有软件。
项目代码 ¶
SDKMAN!核心的CLI代码在GitHub的sdkman-cli,功能代码主要由Bash组成,30多个文件,总计2000行左右。 这个年代,已经很少能找到这种纯Bash项目了。 更难得的是,它使用Gherkin来做BDD测试;以Groovy来写测试代码,共计2000多行。 它是一个值得参考的Bash项目。 (如果你真的还在用Bash写项目的话。)
然而,问题也是很明显的。 Bash受限于语言本身的设计与狭小的生态,这2000行的代码还有很多问题。 如果要为CLI的品质而打分,满分5分,我只能给2分。
$ sdk broadcast -h
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
Stop! -h is not a valid candidate.
不过,它确实是一个可用的项目。