cargo install fine-directory-curator 安装报错:fine-directory-curator v0.2.0
error: failed to compile fine-directory-curator v0.2.0, intermediate artifacts can be found at /var/folders/px/tgz0v41d3mj8vzpd6zqf1ct40000gn/T/cargo-installEvGiUWCaused by:
failed to select a version for env_logger.
... required by package fine-directory-curator v0.2.0
versions that meet the requirements 0.11 are: 0.11.8, 0.11.7, 0.11.6, 0.11.5, 0.11.4, 0.11.3, 0.11.2, 0.11.1, 0.11.0 the package fine-directory-curator depends on env_logger, with features: anstream but env_logger does not have these features.
It has an optional dependency with that name, but that dependency uses the "dep:" syntax in the features table, so it does not have an implicit feature with that name. failed to select a version for env_logger which could resolve this conflict
问题分析
这个错误是由于 fine-directory-curator v0.2.0 的 Cargo.toml 中对 env_logger ^0.11 的依赖声明了 anstream 特性,但 env_logger 0.11.x 版本中 anstream 是一个可选依赖(使用 "dep:anstream" 语法),而不是直接的 crate 特性。这导致 Cargo 无法解析依赖,因为它期望 env_logger 本身有 anstream 特性,但实际上它只是激活了可选的 anstream crate。
这是一个常见的 Cargo 解析 bug,已在 Cargo 1.71.0+ 中修复(参考 Cargo 的相关 issue)。如果你的 Cargo 版本较旧(如 1.70 或更早),就会触发此问题。
解决方案
1. 首选:更新 Cargo 到最新版本(推荐)
- 这能彻底解决解析问题,且适用于所有类似依赖冲突。
- 步骤:
- 检查当前版本:
cargo --version。
- 更新 Rust 和 Cargo(推荐通过 rustup):
rustup update stable
这会将 Cargo 更新到 1.75+(截至 2025 年 11 月)。
- 重新安装:
cargo install fine-directory-curator
- 为什么有效:新版 Cargo 正确处理
"dep:" 语法下的可选依赖特性。
2. 如果无法更新 Cargo:克隆源代码并手动构建
- 绕过
cargo install 的解析,直接构建二进制。
- 步骤:
- 克隆仓库(假设源代码在 GitHub 上;如果不是,检查 crates.io 页面获取源代码链接):
git clone https://github.com/[author]/fine-directory-curator.git # 替换为实际仓库
cd fine-directory-curator
(注:从 crates.io 下载源 tarball:cargo download fine-directory-curator --version 0.2.0,然后解压。)
- 编辑
Cargo.toml,移除 env_logger 的 anstream 特性(临时修复):
- 找到
[dependencies.env_logger] 行,将 features = ["anstream"] 改为 features = [] 或删除该行。
- 构建并安装:
cargo build --release
cargo install --path .
- 注意:这可能影响日志颜色的输出,但能让安装成功。后续可联系 crate 作者修复。
3. 其他检查
- 确保 Rust 工具链是最新的:
rustup default stable。
- 如果你是 macOS 用户(从路径
/var/folders/ 看像是),检查是否有系统级依赖冲突(如通过 Homebrew 安装的旧 Rust)。
- 如果问题持续,尝试
cargo clean 清理缓存,或在干净目录下重试。
更新 Cargo 后,应该就能正常安装了。如果还有其他错误,提供更多日志!