在Linux中使用SDKMAN管理多个软件开发套件

时间:2020-03-21 11:46:58  来源:igfitidea点击:

我们是经常在不同的SDK上测试应用程序的开发人员吗?
我有一个好消息要给你! SDKMAN是一个CLI工具,可轻松管理Linux上的多个软件开发套件。
它提供了一种方便的方法来安装,切换,列出和删除候选对象。
使用SDKMAN,我们可以轻松管理多个SDK的并行版本。
它允许开发人员为JVM安装Java,Groovy,Scala,Kotlin和Ceylon之类的软件开发工具包。
还支持Ant,Gradle,Grails,Maven,SBT,Spark,Spring Boot,Vert.x等。
SDKMAN是用Bash编写的免费,轻量级的开源实用程序。

在Linux上安装SDKMAN

安装SDKMAN很简单。
首先,请确保我们已经安装了zip和unzip应用程序。

大多数Linux发行版的默认存储库中都可以使用它。
例如,要在基于Debian的系统上安装解压缩,只需运行:

$sudo apt-get install zip unzip

然后,使用以下命令安装SDKMAN:

$curl -s "https://get.sdkman.io" | bash

就这么简单。
此命令将在$HOME/.sdkman位置安装SDKMAN。

输出示例:

Now attempting installation...

Looking for a previous installation of SDKMAN...
Looking for unzip...
Looking for zip...
Looking for curl...
Looking for sed...
Installing SDKMAN scripts...
Create distribution directories...
Getting available candidates...
Prime the config file...
Download script archive...
###################### 100.0%
Extract script archive...
Install scripts...
Set version to 5.8.3+506 ...
Attempt update of interactive bash profile on regular UNIX...
Added sdkman init snippet to /home/theitroad/.bashrc
Attempt update of zsh profile...
Updated existing /home/theitroad/.zshrc

请打开一个新终端,或者在现有终端中运行以下终端:

source "/home/theitroad/.sdkman/bin/sdkman-init.sh"

然后执行以下命令:

sdk help

安装完成后,运行以下命令初始化SDKMAN:

$source "$HOME/.sdkman/bin/sdkman-init.sh"

如果要将其安装在$HOME/.sdkman之外的其他自定义位置,例如/usr/local /,请执行以下操作:

$export SDKMAN_DIR="/usr/local/sdkman" && curl -s "https://get.sdkman.io" | bash

确保用户对此文件夹具有完全访问权限。

最后,使用以下命令检查安装是否成功:

$sdk version

输出示例:

==== BROADCAST =================================================================
* 2017-06-27: sbt 1.3.13 released on SDKMAN! #scala
* 2017-06-26: Micronaut 2.0.0 released on SDKMAN! #micronautfw
* 2017-06-22: Micronaut 2.0.0.RC2 released on SDKMAN! #micronautfw
================================================================================
SDKMAN 5.8.3+506

恭喜你! SDKMAN已安装。
让我们继续,看看如何安装和管理SDK。

使用SDKMAN管理多个软件开发套件

列出所有可用的软件开发套件(SDK)

要查看所有可用候选者(SDK)的列表,请运行:

$sdk list

输出示例:

================================================================================
q-quit                                  /-search down
j-down                                  ?-search up
k-up                                    h-help
-------------------------------------------------------------------------------
Ant (1.10.1)                                             https://ant.apache.org/
Apache Ant is a Java library and command-line tool whose mission is to drive
processes described in build files as targets and extension points dependent
upon each other. The main known usage of Ant is the build of Java applications.
Ant supplies a number of built-in tasks allowing to compile, assemble, test and
run Java applications. Ant can also be used effectively to build non Java
applications, for instance C or C++ applications. More generally, Ant can be
used to pilot any type of process which can be described in terms of targets and
tasks.
                                                               $sdk install ant
-------------------------------------------------------------------------------
AsciidoctorJ (2.3.1)                                     http://asciidoctor.org/
AsciidoctorJ is the official library for running Asciidoctor on the JVM. Using
AsciidoctorJ, you can convert AsciiDoc content or analyze the structure of a
parsed AsciiDoc document from Java and other JVM languages.
:

如我们所见,SDKMAN一次列出了一个候选对象以及该候选对象的描述,官方和安装命令。
按ENTER键列出下一个候选者。
要关闭它,请按q。

安装新的SDK

要安装SDK,例如Java JDK,请运行:

$sdk install java

输出示例:

Downloading: java 11.0.7.hs-adpt
In progress...
################################################### 100.0%################################################### 100.0%
Repackaging Java 11.0.7.hs-adpt...
Done repackaging...
Installing: java 11.0.7.hs-adpt
Done installing!
Setting java 11.0.7.hs-adpt as default.

我们刚刚安装了Java。
让我们检查其版本:

$java --version
openjdk 11.0.7 2017-04-14
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.7+10)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.7+10, mixed mode)

如果已经存在多个SDK,则会提示我们是否要将当前安装的版本设置为默认版本。
回答“是”会将当前安装的版本设置为默认版本。

安装特定版本的SDK

要安装特定版本的SDK,请执行以下操作:

$sdk install ant 1.10.1

上面的命令将安装Ant版本1.10.1.

如果我们已经在本地安装了特定的候选软件,则可以将其设置为本地版本,如下所示。

$sdk install groovy 3.0.0-SNAPSHOT /path/to/groovy-3.0.0-SNAPSHOT

列出候选版本

列出特定的候选版本:

$sdk list ant

输出示例:

================================================================================
Available Ant Versions
================================================================================
> * 1.10.1 
1.10.0 
1.9.9 
1.9.8 
1.9.7 
================================================================================
+ - local version
* - installed
> - currently in use
================================================================================

如我们在上面的输出中看到的,蚂蚁1.10.1的前缀为“>”和“ *”。
在此,>表示当前正在使用此版本,*表示它是默认版本。

设置默认的SDK

就像我已经说过的那样,如果我们已经安装了多个版本,SDKMAN将提示我们是否要将当前安装的版本设置为默认版本。
我们可以回答“是”以将其设置为默认值。
另外,我们可以稍后使用以下命令来执行此操作:

$sdk default ant 1.9.9

上面的命令会将Apache Ant版本1.9.9设置为默认值。

对当前的shell使用特定的SDK

我们可以选择要在当前Shell中使用的特定候选版本。

$sdk use ant 1.9.9

请注意,这将使给定版本仅在当前会话中使用。
要使其永久,请使用如上所示的“默认”命令。

显示当前使用的版本

要检查候选对象(例如Java)当前正在使用的内容,请运行:

$sdk current java
Using java version 8.0.172-zulu

要检查所有候选人(例如Java)当前正在使用什么,请运行:

$sdk current
Using:
ant: 1.10.1
java: 8.0.172-zulu

升级候选人

要升级过时的候选人,请执行以下操作:

$sdk upgrade scala

我们也可以检查所有候选人过时的事物。

$sdk upgrade

离线模式

SDKMAN具有离线模式功能,该功能允许SDKMAN在离线工作时起作用。
我们可以随时使用以下命令启用或者禁用脱机模式:

$sdk offline enable
$sdk offline disable

删除已安装的SDK

要删除已安装的SDK,请运行:

$sdk uninstall ant 1.9.9

获得帮助

要显示帮助部分,请运行:

$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]
upgrade or ug [candidate]
version or v
broadcast or b
help or h
offline [enable|disable]
selfupdate [force]
update
flush <broadcast|archives|temp>
candidate : the SDK to install: groovy, scala, grails, gradle, kotlin, etc.
                 use list command for comprehensive list of candidates
                 eg: $sdk list
version : where optional, defaults to latest stable if not provided
             eg: $sdk install groovy

更新SDKMAN

以下命令将安装新版本的SDKMAN(如果有)。

$sdk selfupdate

SDKMAN还将定期检查是否有任何更新,并告知我们如何更新。

WARNING: SDKMAN is out-of-date and requires an update.
$sdk update
Adding new candidates(s): scala

删除缓存

建议我们不时清理包含下载的SDK二进制文件的缓存。
为此,只需运行:

$sdk flush archives

清理临时文件夹以节省一些空间也很不错:

$sdk flush temp

卸载SDKMAN

如果我们不需要SDKMAN或者不喜欢它,请如下所示将其删除。

$tar zcvf ~/sdkman-backup_$(date +%F-%kh%M).tar.gz -C ~/.sdkman
$rm -rf ~/.sdkman

最后,打开.bashrc(或者.bash_profile或者.profile)文件:

$nano ~/.bashrc

查找并删除以下行。

#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="/home/theitroad/.sdkman"
[[ -s "/home/theitroad/.sdkman/bin/sdkman-init.sh" ]] && source "/home/theitroad/.sdkman/bin/sdkman-init.sh"

如果使用ZSH,请从.zshrc文件中删除上述行。

资源:

  • SDKMAN 网站 https://sdkman.io/