doc: update docs/sdkman.md (#588)

This commit is contained in:
jaywcjlove 2024-04-03 13:49:47 +08:00
parent a3ffdd16fc
commit bb605ea530

View File

@ -1,154 +1,175 @@
SDKMAN 备忘清单
====
SDKMAN是一款管理 java 体系中的各类 SDK 版本的工具可以用于大多数基于Uinx的系统。它提供了命令行以及API功能有安装、移除、列举候选版本。这个快速参考备忘单显示了它的常用命令使用清单
- [SDKMAN 官网](http://sdkman.io)
[SDKMAN](http://sdkman.io) 是一款管理 java 体系中的各类 SDK 版本的工具,可以用于大多数基于 Uinx 的系统
入门
---
### 安装
| 安装命令 | 环境 |
| :---------------------------------------- | ---------------------------------------------------- |
| `curl -s "https://get.sdkman.io" \| bash` | macos/linux |
| `curl -s "https://get.sdkman.io" \| bash` | windows 需要 (WSL Approach) 或者 (Git Bash Approach) |
macOS/Linux
- 查看 sdkman 是否安装成功
```bash
curl -s "https://get.sdkman.io" \| bash
```
```bash
$ sdk version
```
Windows 需要 (WSL Approach) 或者 (Git Bash Approach)
```bash
curl -s "https://get.sdkman.io" \| bash
```
初始化 SDKMAN
```bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
```
查看 sdkman 是否安装成功
```bash
$ sdk version
```
### 获取帮助
您可以通过运行以下命令获得基本帮助:
`$ sdk help`
这将提供一个有用的顶级帮助页面。您可以向该命令添加限定符以获得有关特定子命令的帮助。
`$ sdk help install`
### 安装一个SDK
最新稳定版通过运行以下命令安装您选择的SDK的最新稳定版本例如Java JDK
```shell
$ sdk install java
You will see something like the following output:
Downloading: java 21.0.2-tem
In progress...
######################################################################## 100.0%
Installing: java 21.0.2-tem
Done installing!
Now you will be prompted if you want this version to be set asdefault.
Do you want java 21.0.2-tem to be set as default? (Y/n):
Answering yes (or hitting enter) will ensure that all subsequent shells opened will have this version of the SDK in use by default.
Setting java 21.0.2-tem as default.
```bash
$ sdk help
```
### 安装特定版本
这将提供一个有用的顶级帮助页面。您可以向该命令添加限定符以获得有关特定子命令的帮助
`$ sdk install scala 3.4.1`
```bash
$ sdk help install
```
### 查看
列出所有可用的 SDKs
```bash
sdk list
```
查看当前使用的 SDK
```bash
$ sdk current
```
查看特定 SDK 的版本列表例如Java
```bash
$ sdk list java
```
### 安装卸载
<!--rehype:wrap-class=row-span-2-->
安装特定版本的 SDK例如Java
```bash
$ sdk install java <version>
```
使用已安装的 SDK例如Java
```bash
$ sdk use java <version>
```
使用已安装的 SDK例如Java
```bash
$ sdk use java <version>
```
卸载 SDK例如Java
```bash
$ sdk uninstall java <version>
```
列出所有已安装的 SDKs
```bash
$ sdk list installed
```
删除一个指定版本
```bash
$ sdk uninstall scala 3.4.1
```
### 更新
更新 SDKMAN 自身
```bash
$ sdk selfupdate
```
更新已安装的 SDKs
```bash
$ sdk update
```
设置默认的 SDK 版本例如Java
```bash
$ sdk default java <version>
```
### 帮助
查看 SDKMAN 所有可用的命令
```bash
$ sdk help
```
这些命令可以帮助你安装、管理和使用不同版本的 SDK如 Java、Groovy、Gradle、Maven 等。
### 安装本地版本
使用快照版本?已经在本地安装了吗?通过指定本地安装的路径来安装本地版本:
`$ sdk install groovy 3.0.0-SNAPSHOT /path/to/groovy-3.0.0-SNAPSHOT`
```bash
$ sdk install groovy 3.0.0-SNAPSHOT /path/to/groovy-3.0.0-SNAPSHOT
```
<!--rehype:className=wrap-text-->
`$ sdk install java 17-zulu /Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home`
```bash
$ sdk install java 17-zulu /Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home
```
<!--rehype:className=wrap-text-->
### 删除一个指定版本
### 使用版本
`$ sdk uninstall scala 3.4.1`
查看已安装的 SDKs**
### 所有可以安装的软件列表
要获得可用 sdk 的列表:
`$ sdk list`
```shell
================================================================================
Available Candidates
================================================================================
q-quit /-search down
j-down ?-search up
k-up h-help
--------------------------------------------------------------------------------
...
--------------------------------------------------------------------------------
Java (21.0.2-tem) https://projects.eclipse.org/projects/adoptium.temurin/
Java Platform, Standard Edition (or Java SE) is a widely used platform for
development and deployment of portable code for desktop and server environments.
Java SE uses the object-oriented Java programming language. It is part of the
Java software-platform family. Java SE defines a wide range of general-purpose
APIs such as Java APIs for the Java Class Library and also includes the Java
Language Specification and the Java Virtual Machine Specification.
$ sdk install java
--------------------------------------------------------------------------------
...
```bash
$ sdk list installed
```
### 获取某个 sdk 的版本列表
切换使用特定版本的 SDK例如Java
`$ sdk list groovy`
```shell
This will result in a list view showing the available, local, installed and current versions of the SDK.
================================================================================
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
================================================================================
```bash
$ sdk use java <version>
$ sdk use scala 3.4.1
```
### 使用指定版本
设置默认使用的 SDK 版本例如Java
选择在当前终端中使用给定版本:
`$ sdk use scala 3.4.1`
**重要的是要意识到,这将仅切换当前 shell 的 SDK 版本。若要使此更改永久化,请改用默认命令。**
### 设置默认版本
选择将给定版本设为默认版本:
`$ sdk default scala 3.4.1`
这将确保所有后续 shell 将从使用中的版本 3.4.1。
```bash
$ sdk default java <version>
$ sdk default scala 3.4.1
```
### 查看当前使用的版本
@ -170,74 +191,59 @@ scala: 3.4.1
```
### 配置 ENV
<!--rehype:wrap-class=row-span-3-->
想在每次访问项目时切换到特定的 JDK 或 SDK 吗?这可以通过项目基本目录中的 `.sdkmanrc` 文件来实现。可以通过发出以下命令自动生成此文件:
切换到特定的 JDK 或 SDK通过项目基本目录中的 `.sdkmanrc` 文件来实现。执行下面命令自动生配置文件:
`$ sdk env init`
```bash
$ sdk env init
```
现在已经在当前目录中创建了一个包含以下内容的配置文件:
```conf
```shell
# Enable auto-env through the sdkman_auto_env config
# Add key=value pairs of SDKs to use below
java=21.0.2-tem
```
<!--rehype:className=wrap-text-->
该文件预先填充了当前使用的JDK版本但可以根据需要包含任意多个支持的SDK的键值对。要切换到 `.sdkmanrc`文件中的配置,只需发出以下命令:
切换到 `.sdkmanrc`文件中的配置,只需发出以下命令:
`sdk env`
```bash
$ sdk env
# 您应该看到如下输出:
# Using java version 21.0.2-tem in this shell.
```
<!--rehype:className=wrap-text-->
您应该看到如下输出:
`Using java version 21.0.2-tem in this shell.`
您的路径现在也已更新为在当前 shell 中使用这些 SDK 中的任何一个。离开项目时您可能需要将SDK重置为默认版本。这可以通过输入
通过下面命令,将 SDK 重置为默认版本
```shell
$ sdk env clear
```
将java版本恢复到21.0.2-tem默认签出新项目后您可能缺少在项目的 `.sdkmanrc` 文件中指定的一些SDK。要安装这些丢失的SDK只需键入
安装 `.sdkmanrc` 配置文件中指定丢失的 SDK
```shell
$ sdk env install
Downloading: java 21.0.2-tem
In progress...
######################################################################## 100,0%
Repackaging Java 21.0.2-tem...
Done repackaging...
Installing: java 21.0.2-tem
Done installing!
```
您想在 cd 到目录中时自动切换 SDK 版本吗?这可以通过在 sdkman 配置中设置 `sdkman_auto_env=true` 来实现。请注意这也会在离开目录时将任何特定于项目的SDK重置为默认版本。
在 cd 到目录中时自动切换 SDK 版本,可以通过在 sdkman 配置中设置 `sdkman_auto_env=true` 来实现。请注意这也会在离开目录时将任何特定于项目的SDK重置为默认版本。
### 升级版本
要查看您系统中 SDK 当前过期的内容:
升级特定 SDK 到最新版本
```shell
$ sdk upgrade springboot
Upgrade:
springboot (1.2.4.RELEASE, 1.2.3.RELEASE < 3.2.4)
```
要查看所有 SDK 的过时内容:
```shell
$ sdk upgrade
Upgrade:
gradle (2.3, 1.11, 2.4, 2.5 < 8.7)
grails (2.5.1 < 6.1.1)
springboot (1.2.4.RELEASE, 1.2.3.RELEASE < 3.2.4
```
### SDKMAN 版本
@ -250,115 +256,133 @@ script: 5.7.0
native: 0.1.3
```
### 自动更新
安装新版本的 `SDKMAN` 如果可用
```bash
$ sdk selfupdate
```
通过将 force 参数传递给命令强制重新安装:
```bash
$ sdk selfupdate force
```
自动每日检查新版本的SDKMAN也将代表用户执行。
### Home
获取 SDK 所在位置的绝对路径
```shell
$ sdk home java 21.0.2-tem
# /home/myuser/.sdkman/candidates/java/21.0.2-tem
```
<!--rehype:className=wrap-text-->
### Flush
应该很少需要刷新 `SDKMAN` 。flush 命令有助于实现这一点,因此您不需要删除任何目录。
```bash
$ sdk flush
```
手动删除像 `.sdkman/tmp` 目录这样的目录会破坏 sdkman请始终使用 flush 命令!
### 离线模式
最初被称为飞行模式这允许SDKMAN以在脱机工作时发挥作用。它有一个参数可以传递给启用或禁用脱机模式。
启用强制脱机模式
```shell
$ sdk offline enable
Forced offline mode enabled.
$ sdk offline disable
Online mode re-enabled
```
在离线模式下操作时大多数命令仍然可以工作即使它们将以缩小的容量操作。例如list命令它将只显示当前安装的和活动的版本
重新启用联机模式
```shell
$ sdk offline disable
```
离线模式下显示当前安装的和活动的版本:
```shell
$ sdk list groovy
------------------------------------------------------------
---------------------------
Offline Mode: only showing installed groovy versions
------------------------------------------------------------
离线模式仅显示已安装的groovy版本
--------------------------
>
> 2.4.4
- 2.4.3
------------------------------------------------------------
--------------------------
- - installed
>
> - currently in use
>
------------------------------------------------------------
---------------------------
```
当互联网可用/不可用时,离线模式也将自动禁用/启用。当然,需要互联网连接的命令不会起作用,但会发出警告。
### 自动更新
安装新版本的SDKMAN如果可用。
`$ sdk selfupdate`
如果没有可用的新版本将显示相应的消息。可以通过将force参数传递给命令来强制重新安装
`$ sdk selfupdate force`
自动每日检查新版本的SDKMAN也将代表用户执行。
### 更新
定期更新 SDKMAN需要更新以了解新的或已删除的SDK。当 SDK 元数据可能变得过时时,会显示一条警告,并说明如何更新。只需运行以下命令,就可以刷新 SDK 缓存,并且可以安装新的 SDK 缓存:
当 SDK 元数据可能变得过时时,会显示一条警告,并说明如何更新。
```shell
WARNING: SDKMAN is out-of-date and requires an update.
$ sdk update
Adding new candidates(s): kotlin
```
### Flush
应该很少需要刷新 SDKMAN。flush命令有助于实现这一点因此您不需要删除任何目录。
手动删除像 .sdkman/tmp 目录这样的目录会破坏 sdkman请始终使用 flush 命令!
`$ sdk flush`
### Home
在脚本中使用 SDKMAN 时获取SDK所在位置的绝对路径通常很有用类似于 java_home 命令在 macOS 上的工作方式)。为此,我们拥有设置权限。
只需运行以下命令,就可以刷新 SDK 缓存,并且可以安装新的 SDK 缓存:
```shell
$ sdk home java 21.0.2-tem
/home/myuser/.sdkman/candidates/java/21.0.2-tem
$ sdk update
# Adding new candidates(s): kotlin
```
<!--rehype:className=wrap-text-->
### Configuration
定期更新 `SDKMAN` 需要更新以了解新的或已删除的SDK。
可以在 ~/.sdkman/etc/config 文件中找到配置。要编辑配置,可以发出 sdk-config 命令在系统编辑器中编辑此文件。以下配置可用:
### 配置
```conf
# make sdkman non-interactive, preferred for CI environments
可以在 `~/.sdkman/etc/config` 文件中找到配置。要编辑配置,可以发出 `sdk-config` 命令在系统编辑器中编辑此文件。以下配置可用:
```ini
# 使 sdkman 成为非交互式的,适用于 CI 环境
sdkman_auto_answer=true|false
# check for newer versions and prompt for update
# 检查更新版本并提示更新
sdkman_selfupdate_feature=true|false
# disables SSL certificate verification
# 禁用 SSL 证书验证
# https://github.com/sdkman/sdkman-cli/issues/327
# HERE BE DRAGONS....
sdkman_insecure_ssl=true|false
# configure curl timeouts
# 配置 curl 超时
sdkman_curl_connect_timeout=5
sdkman_curl_continue=true
sdkman_curl_max_time=10
# subscribe to the beta channel
# 订阅测试版频道
sdkman_beta_channel=true|false
# enable verbose debugging
# 启用详细调试
sdkman_debug_mode=true|false
# enable colour mode
# 启用色彩模式
sdkman_colour_enable=true|false
# enable automatic env
# 启用自动环境
sdkman_auto_env=true|false
# enable bash or zsh auto-completion
# 启用 bash 或 zsh 自动完成功能
sdkman_auto_complete=true|false
```
<!--rehype:className=wrap-text-->