https://www.ostechnix.com/sdkman-a-cli-tool-to-easily-manage-multiple-software-development-kits/
作者 | Sk
譯者 | dianbanjiu ???共計翻譯:12.0 篇 貢獻時間:40 天
你是否是一個經常在不同的 SDK 下安裝和測試應用的開發者?我有一個好訊息要告訴你!給你介紹一下 SDKMAN,一個可以幫你輕鬆管理多個 SDK 的命令列工具。它為安裝、切換、列出和移除 SDK 提供了一個簡便的方式。有了 SDKMAN,你可以在任何類 Unix 的作業系統上輕鬆地並行管理多個 SDK 的多個版本。它允許開發者為 JVM 安裝不同的 SDK,例如 Java、Groovy、Scala、Kotlin 和 Ceylon、Ant、Gradle、Grails、Maven、SBT、Spark、Spring Boot、Vert.x,以及許多其他支援的 SDK。SDKMAN 是免費、輕量、開源、使用 Bash 編寫的程式。
安裝 SDKMAN
安裝 SDKMAN 很簡單。首先,確保你已經安裝了 zip
和 unzip
這兩個應用。它們在大多數的 Linux 發行版的預設倉庫中。
例如,在基於 Debian 的系統上安裝 unzip,只需要執行:
$ sudo apt-get install zip unzip
然後使用下麵的命令安裝 SDKMAN:
$ curl -s "https://get.sdkman.io" | bash
在安裝完成之後,執行以下命令:
$ source "$HOME/.sdkman/bin/sdkman-init.sh"
如果你希望自定義安裝到其他位置,例如 /usr/local/
,你可以這樣做:
$ export SDKMAN_DIR="/usr/local/sdkman" && curl -s "https://get.sdkman.io" | bash
確保你的使用者有足夠的許可權訪問這個目錄。
最後,在安裝完成後使用下麵的命令檢查一下:
$ sdk version
==== BROADCAST =================================================================
* 01/08/18: Kotlin 1.2.60 released on SDKMAN! #kotlin
* 31/07/18: Sbt 1.2.0 released on SDKMAN! #sbt
* 31/07/18: Infrastructor 0.2.1 released on SDKMAN! #infrastructor
================================================================================
SDKMAN 5.7.2+323
恭喜你!SDKMAN 已經安裝完成了。讓我們接下來看如何安裝和管理 SDKs 吧。
管理多個 SDK
檢視可用的 SDK 清單,執行:
$ sdk list
將會輸出:
================================================================================
Available Candidates
================================================================================
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
就像你看到的,SDK 每次列出眾多 SDK 中的一個,以及該 SDK 的描述資訊、官方網址和安裝命令。按回車鍵繼續下一個。
安裝一個新的 SDK,例如 Java JDK,執行:
$ sdk install java
將會輸出:
Downloading: java 8.0.172-zulu
In progress...
######################################################################################## 100.0%
Repackaging Java 8.0.172-zulu...
Done repackaging...
Installing: java 8.0.172-zulu
Done installing!
Setting java 8.0.172-zulu as default.
如果你安裝了多個 SDK,它將會提示你是否想要將當前安裝的版本設定為 預設版本。回答 Yes
將會把當前版本設定為預設版本。
使用以下命令安裝一個 SDK 的其他版本:
$ sdk install ant 1.10.1
如果你之前已經在本地安裝了一個 SDK,你可以像下麵這樣設定它為本地版本。
$ sdk install groovy 3.0.0-SNAPSHOT /path/to/groovy-3.0.0-SNAPSHOT
列出一個 SDK 的多個版本:
$ 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
================================================================================
像我之前說的,如果你安裝了多個版本,SDKMAN 會提示你是否想要設定當前安裝的版本為 預設版本。你可以回答 Yes 設定它為預設版本。當然,你也可以在稍後使用下麵的命令設定:
$ sdk default ant 1.9.9
上面的命令將會設定 Apache Ant 1.9.9 為預設版本。
你可以根據自己的需要選擇使用任何已安裝的 SDK 版本,僅需執行以下命令:
$ sdk use ant 1.9.9
檢查某個具體 SDK 當前的版本號,例如 Java,執行:
$ sdk current java
Using java version 8.0.172-zulu
檢查所有當下在使用的 SDK 版本號,執行:
$ sdk current
Using:
ant: 1.10.1
java: 8.0.172-zulu
升級過時的 SDK,執行:
$ sdk upgrade scala
你也可以檢查所有的 SDK 中還有哪些是過時的。
$ sdk upgrade
SDKMAN 有離線樣式,可以讓 SDKMAN 在離線時也正常運作。你可以使用下麵的命令在任何時間開啟或者關閉離線樣式:
$ sdk offline enable
$ sdk offline disable
要移除已安裝的 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
如果有可用的新版本,可以使用下麵的命令安裝:
$ 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
,找到並刪除下麵這幾行。
#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="/home/sk/.sdkman"
[[ -s "/home/sk/.sdkman/bin/sdkman-init.sh" ]] && source "/home/sk/.sdkman/bin/sdkman-init.sh"
如果你使用的是 ZSH,就從 .zshrc
中刪除上面這一行。
這就是所有的內容了。我希望 SDKMAN 可以幫到你。還有更多的乾貨即將到來。敬請期待!
祝近祺!
:)
via: https://www.ostechnix.com/sdkman-a-cli-tool-to-easily-manage-multiple-software-development-kits/
作者:SK[2] 選題:lujun9972 譯者:dianbanjiu 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出