Skip to content

运行时与生态工具

本页覆盖 Node.js、Python、Java/JRE、Go、Rust,以及 Maven、Gradle、Kotlin。 JavaScript 包管理器另见专页,任意 GitHub Release 工具见 下载源与供应链安全

通用命令形态

text
osdk install TOOL[@VERSION]... [-o|--opt KEY=VALUE ...]
osdk lock [TOOL[@VERSION] ...] [-o|--opt KEY=VALUE ...]
osdk upgrade [TOOL[@VERSION] ...] [-o|--opt KEY=VALUE ...]
osdk use|u TOOL[@VERSION] [-g|--global] [-o|--opt KEY=VALUE ...]
osdk exec (-t|--tool TOOL[@VERSION])... -- COMMAND [ARG ...]
osdk list|ls [TOOL]
osdk list-remote|lsr TOOL [FILTER]
osdk current [TOOL]
osdk where TOOL[@VERSION]
osdk uninstall|rm TOOL@VERSION

-o/--opt 可重复,必须写成 KEY=VALUE。它会应用到本次调用中的每个工具; 一次命令混合不同 backend 时,不要传只适用于其中一个 backend 的选项。

后端速览

backend工具名别名生态版本文件专用安装选项
nodenodejs.nvmrc.node-versionpackage.jsonarchcorepack
pythonpycpython.python-versionvarianttag
javajdkopenjdk.java-version.sdkmanrcdistributionpackage-type
gogolanggo.mod.go-version
rustrustuprust-toolchain.tomlrust-toolchainprofilecomponentstargets
mavenmvn.mvn-version
gradle.gradle-version
kotlinkotlinc.kotlin-version

活动版本的完整来源优先级,以及无参数生命周期命令对生态文件的当前限制,见 项目版本发现

Node.js

bash
osdk install node@20
osdk install node@20.19.0 -o corepack=true
osdk lock node@20 -o arch=arm64
选项作用
archx64arm64x86arm选择目标 Node artifact;默认 host 架构
corepack`true1

corepack 未显式传入时取 [settings.node].corepack,默认 false。启用失败会删除 本次安装,不留下完成标记。Node 的 shim 只负责 nodecorepack;npm/npx 由 独立 npm backend 或相应 Node 安装的路由 shim 协调。执行环境还会在用户未设置时 提供共享 npm_config_cache

arch 可用于生成其他架构的 lock 区段,但 osdk 没有只下载模式;实际安装会拒绝 不能在当前 host 执行的 Node artifact。

Node 也提供全局包迁移:

text
osdk node migrate-packages --from VERSION --to VERSION [--apply]
bash
# 只生成计划
osdk node migrate-packages --from 20.19.0 --to 22.17.0

# 执行迁移
osdk node migrate-packages --from 20.19.0 --to 22.17.0 --apply

源、目标都必须是已安装且含 npm 的受管 Node。osdk 通过源版本的 npm ls -g --depth=0 --json --long 枚举,跳过 npm 自身、目标已存在的包,以及声明 hasInstallScript=truegypfile=true 的原生/安装脚本包。--apply 按精确版本安装; 失败时恢复目标原有的全局包集合。

Python

python@3.14 是默认 CPython 的简写。完整请求为 python@IMPLEMENTATION-VERSION+VARIANT

bash
osdk install python@3.14
osdk install python@cpython-3.14+freethreaded
osdk install python@cpython-3.14+debug
osdk install python@cpython-3.14+freethreaded+debug
osdk install python@pypy-3.11
osdk install python@graalpy-3.12
osdk install python@pyodide-3.14
实现支持的变体identity 示例
cpythondefaultfreethreadeddebugfreethreaded+debug3.14.7cpython-3.14.7+debug
pypydefaultpypy-3.11.x
graalpydefaultgraalpy-3.12.x
pyodidedefaultpyodide-3.14.x
选项作用
variant上表中的变体与请求中的 +VARIANT 等价;显式选项优先
tagpython-build-standalone 发布日期,如 20240224为经典 CPython 下载固定历史 PBS release

实现、精确 Python 版本、变体和 catalog artifact 都会进入 lock,不同 identity 可 并存。普通 CPython 使用内置 python-build-standalone 版本索引;多实现、变体和预发布 使用内置的已校验 catalog。自定义 catalog 必须同时指定内容摘要:

toml
[settings.python]
catalog_url = "/approved/python-catalog.json"
catalog_sha256 = "0123456789abcdef..."

catalog_url 可为 HTTP(S) 或本地路径。只有 SHA-256、schema 与每个 artifact checksum 全部有效才更新 last-good;刷新失败会尝试 last-good,再回退内置 catalog。 预发布策略见预发布版本

查找解释器:

text
osdk python find [REQUEST]
bash
osdk python find
osdk python find pypy-3.11
osdk python find 3.14+freethreaded

managed 结果按可选请求筛选;随后仍扫描 PATH 与系统候选并去重,按 managedPATHsystem 标记输出。完全找不到时返回错误。

Java JDK 与 JRE

bash
osdk install java@21
osdk install java@zulu-17.0.1
osdk install java@21 -o distribution=zulu -o package-type=jdk
osdk install java@21 -o package-type=jre
选项默认值
distributionFoojay distribution ID,如 temurinzulutemurin
package-typejdkjrejdk

发行版也可写进版本请求,例如 java@temurin-21。Foojay 查询按发行版、操作系统、 架构、archive 类型、JDK/JRE 和 Linux libc 过滤。JRE identity 为 jre-<resolved-version>,可与相同版本的 JDK 共存;执行 JDK/JRE 时导出 JAVA_HOME

内置 Temurin LTS catalog 包含 8、11、17、21、25,可在空 metadata 缓存下解析; 已锁定的 artifact 在 Foojay 不可用时也可安装。可设置兼容 Foojay /packages 的 端点或静态镜像:

toml
[settings.java]
catalog_url = "https://mirror.example/disco/v3.0/packages"

JVM 工具

bash
osdk install maven@3.9.16
osdk install gradle@9.7.0
osdk install kotlin@2.4.10

当前 JVM 工具 catalog 是固定集合:Maven 仅 3.9.16(SHA-512),Gradle 仅 9.7.0(SHA-256),Kotlin 仅 2.4.10(SHA-256)。请求其他版本会失败。它们拥有 独立安装目录和 shim;Kotlin 的 GitHub 下载还提供代理候选。

Go

bash
osdk install go@1.22
osdk use -g golang@1.23

Go 没有 backend 专用 -o。osdk 从 go.dev JSON index 选择当前 OS/架构的 archive 并验证索引中的 SHA-256;下载候选包括 go.dev、Aliyun 和 golang.google.cn。执行时导出 GOROOT,并提供 gogofmt

Rust

Rust backend 委托给安装在 osdk 隔离目录中的 rustup:

bash
osdk install rust@stable
osdk install rust@nightly -o profile=minimal \
  -o components=clippy,rustfmt \
  -o targets=wasm32-unknown-unknown,x86_64-pc-windows-gnu
选项默认值
profilerustup 接受的 profiledefault
components逗号分隔的 rustup component
targets逗号分隔的 rustup target

latestltssystem 都映射为 stablestablebetanightly 与精确 工具链基本原样交给隔离 rustup。rustup bootstrap 自身固定使用 minimal 且不装默认 toolchain。运行时导出 RUSTUP_HOME=<data>/rustupCARGO_HOME=<data>/cargo。 Lock 也会原样保存这些浮动 channel,因此以后重装 stablebetanightly 可能 得到更新 toolchain;需要不可变结果时请写明确版本或带日期的 toolchain。

Component 与 target

text
osdk rust component add NAME [--toolchain TOOLCHAIN]
osdk rust component remove NAME [--toolchain TOOLCHAIN]
osdk rust component list [--toolchain TOOLCHAIN]
osdk rust target add NAME [--toolchain TOOLCHAIN]
osdk rust target remove NAME [--toolchain TOOLCHAIN]
osdk rust target list [--toolchain TOOLCHAIN]

--toolchain 默认 stable,命令直接作用于隔离 rustup。

bash
osdk rust component add rustfmt --toolchain stable
osdk rust target add wasm32-unknown-unknown --toolchain stable

状态、override 与本地工具链

text
osdk rust check [--repair]
osdk rust override import [PATH]
osdk rust override export [PATH]
osdk rust toolchain link NAME PATH
  • check 先执行隔离 rustup check--repair 再按真实 toolchain 目录补建缺失 marker, 并移除没有对应 toolchain 的 marker。
  • override import 从可选目录(默认当前目录)的隔离 rustup override 读取 toolchain, 写入最近项目 osdk.toml
  • override export 把该目录的活动 osdk Rust pin 写成隔离 rustup 的目录 override。
  • toolchain link 要求 PATH 可规范化且包含 bin/NAME 不能有空白、斜杠, 也不能是 ...

linked toolchain 可被 shim 和 shell 使用,但它是本机路径,osdk lock 会拒绝把它 写成可复现 artifact。

基于 MIT 许可发布