在 Linux 中使用 SDKMAN 管理多个软件开发工具包

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

在 Linux 上安装 SDKMAN

安装 SDKMAN 很简单。 首先,确保你已经安装 压缩解压 应用程序。 它在大多数 Linux 发行版的默认存储库中可用。 例如,要在基于 Debian 的系统上安装 unzip,只需运行:

$ sudo apt-get install zip unzip

然后,使用命令安装 SDKMAN:

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

就是这么简单。 此命令将安装 SDKMAN 在 $HOME/.sdkman 地点。

样本输出:

                                -+syyyyyyys:
                            `/yho:`       -yd.
                         `/yh/`             +m.
                       .oho.                 hy                          .`
                     .sh/`                   :N`                `-/o`  `+dyyo:.
                   .yh:`                     `M-          `-/osysoym  :hs` `-+sys:      hhyssssssssy+
                 .sh:`                       `N:          ms/-``  yy.yh-      -hy.    `.N-````````+N.
               `od/`                         `N-       -/oM-      ddd+`     `sd:     hNNm        -N:
              :do`                           .M.       dMMM-     `ms.      /d+`     `NMMs       `do
            .yy-                             :N`    ```mMMM.      -      -hy.       /MMM:       yh
          `+d+`           `:/oo/`       `-/osyh/ossssssdNMM`           .sh:         yMMN`      /m.
         -dh-           :ymNMMMMy  `-/shmNm-`:N/-.``   `.sN            /N-         `NMMy      .m/
       `oNs`          -hysosmMMMMydmNmds+-.:ohm           :             sd`        :MMM/      yy
      .hN+           /d:    -MMMmhs/-.`   .MMMh   .ss+-                 `yy`       sMMN`     :N.
     :mN/           `N/     `o/-`         :MMMo   +MMMN-         .`      `ds       mMMh      do
    /NN/            `N+....--:/+oooosooo+:sMMM:   hMMMM:        `my       .m+     -MMM+     :N.
   /NMo              -+ooooo+/:-....`...:+hNMN.  `NMMMd`        .MM/       -m:    oMMN.     hs
  -NMd`                                    :mm   -MMMm- .s/     -MMm.       /m-   mMMd     -N.
 `mMM/                                      .-   /MMh. -dMo     -MMMy        od. .MMMs..---yh
 +MMM.                                           sNo`.sNMM+     :MMMM/        sh`+MMMNmNm+++-
 mMMM-                                           /--ohmMMM+     :MMMMm.       `hyymmmdddo
 MMMMh.                  ````                  `-+yy/`yMMM/     :MMMMMy       -sm:.``..-:-.`
 dMMMMmo-.``````..-:/osyhddddho.           `+shdh+.   hMMM:     :MmMMMM/   ./yy/` `:sys+/+sh/
 .dMMMMMMmdddddmmNMMMNNNNNMMMMMs           sNdo-      dMMM-  `-/yd/MMMMm-:sy+.   :hs-      /N`
  `/ymNNNNNNNmmdys+/::----/dMMm:          +m-         mMMM+ohmo/.` sMMMMdo-    .om:       `sh
     `.-----+/.`       `.-+hh/`         `od.          NMMNmds/     `mmy:`     +mMy      `:yy.
           /moyso+//+ossso:.           .yy`          `dy+:`         ..       :MMMN+---/oys:
         /+m:  `.-:::-`               /d+                                    +MMMMMMMNh:`
        +MN/                        -yh.                                     `+hddhy+.
       /MM+                       .sh:
      :NMo                      -sh/
     -NMs                    `/yy:
    .NMy                  `:sh+.
   `mMm`               ./yds-
  `dMMMmyo:-.````.-:oymNy:`
  +NMMMMMMMMMMMMMMMMms:`
    -+shmNMMMNmdy+:`


                                                                 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/ostechnix/.bashrc
Attempt update of zsh profile...
Updated existing /home/ostechnix/.zshrc

All done!

Please open a new terminal, or run the following in the existing one:

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

Then issue the following command:

    sdk help

Enjoy!!!

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

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

如果您想将它安装在您选择的自定义位置,而不是 $HOME/.sdkman, 为了 example /usr/本地/, 做:

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

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

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

$ sdk version

样本输出:

==== BROADCAST =================================================================
* 2020-06-27: sbt 1.3.13 released on SDKMAN! #scala
* 2020-06-26: Micronaut 2.0.0 released on SDKMAN! #micronautfw
* 2020-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)                                     https://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 键列出下一个候选人。 到 close 它,按 q.

安装新的 SDK

要安装 SDK,对于 example 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.

在 Linux 中使用 SDKMAN 安装新的 SDK

我们刚刚安装了 Java。 让我们检查一下它的版本:

$ java --version
openjdk 11.0.7 2020-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
================================================================================

正如您在上面的输出中看到的,ant 1.10.1 以“>”和“*”为前缀。 这里,> 表示当前正在使用该版本,* 表示它是默认版本。

设置默认 SDK

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

$ sdk default ant 1.9.9

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

为当前 shell 使用特定的 SDK

您可以选择要在当前 shell 中使用的特定候选版本。

$ sdk use ant 1.9.9

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

显示当前使用的版本

检查候选人当前正在使用的内容,例如 example Java,运行:

$ sdk current java

Using java version 8.0.172-zulu

检查所有候选人当前正在使用的内容,例如 example 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 或者 。轮廓) 文件:

$ nano ~/.bashrc

查找并删除以下行。

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

在 Linux 中卸载 SDKMAN

如果您使用 ZSH,请从 .zshrc 文件。

相关阅读:

  • 如何在 Linux 上使用 jEnv 管理多个 Java 版本
  • 如何在 Linux 上使用 Pyenv 管理多个 Python 版本

资源:

感谢您的光临!

帮助我们帮助您:

祝你有美好的一天!!