OpenSymphony 2.11.0 解决了部分用户从 2.10.0 升级时遇到的失败问题。
旧版 updater 执行的是:
cargo install opensymphony
使用 Rust 1.93.0 时,Cargo 可能选择 kstring 2.0.4,而该版本要求 Rust 1.96.0 或更高版本。因此安装会在 updater 自身被替换前终止。
统一 Rust 基线
OpenSymphony 的 CLI 和桌面应用现在都要求 Rust 1.97.1。workspace 已启用 Cargo Resolver 3,锁定的依赖图中包含 kstring 2.0.4。
本地开发、CI、Clippy、Cargo package metadata 和桌面 release metadata 现在使用同一条 Rust 基线。另一种方案是固定 kstring 2.0.2,继续保留 Rust 1.93。这样既会延续过时的 toolchain,也会带来不必要的依赖债务。
提高 MSRV 是更简单的长期选择。明确的代价是,现有用户可能需要更新一次 Rust。
为什么 2.10.0 updater 仍然可能成功
在本次 release 过程中,一套 2.10.0 安装在更新 Rust 后成功安装了 2.11.0。当用户在 OpenSymphony 源码 checkout 中运行 opensymphony update 时,Rustup 会发现仓库中的 rust-toolchain.toml,并自动为子 Cargo 进程选择 Rust 1.97.1。
Rustup 可能会提示默认 toolchain 已被覆盖。这只是信息提示。
该行为取决于调用命令时的环境。如果用户在 checkout 之外运行 updater,且默认 Rust toolchain 仍然较旧,可能仍需使用下面的手动恢复命令。
升级
请先使用常规更新路径:
rustup update stable
opensymphony update
如果从 2.11 之前的版本升级时失败:
rustup update stable
cargo +stable install opensymphony --locked
安装 2.11.0 后,后续 opensymphony update 会使用:
cargo install opensymphony --locked
依赖锁可以防止 updater 在未提示的情况下解析出与本次 release 测试和发布时不同的依赖图。
OpenSymphony 2.11.0 确立了一条清晰、受支持的 Rust 基线和更可复现的更新路径,无需再通过固定依赖版本来维持旧编译器。
查看 v2.11.0 release tag ,安装 2.11.0 crate ,或阅读前置条件 和运维指南 。