温馨提示×

Linux环境下Rust的包管理如何操作

小樊
42
2025-12-10 09:27:47
栏目: 编程语言

Linux下Rust包管理操作指南

一 环境准备与安装

  • Linux 上推荐使用 rustup 安装 Rust 工具链(包含 cargorustcrustup):
    • 安装命令:curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    • 使配置生效:source "$HOME/.cargo/env"
    • 验证安装:cargo --version
  • 常用目录与变量:
    • CARGO_HOME:Cargo 家目录,默认 ~/.cargo
    • CARGO_BIN:Cargo 可执行文件目录,默认 ~/.cargo/bin(安装器会自动加入 PATH
    • 卸载:rustup self uninstall

二 项目与依赖管理

  • 创建项目:
    • 二进制程序:cargo new hello_world --bin
    • 库项目:cargo new my_lib --lib
  • 添加依赖:编辑项目根目录的 Cargo.toml,在 [dependencies] 下写入包与版本,例如:
    • serde = { version = "1.0", features = ["derive"] }
    • rand = "0.8"
  • 更新依赖:
    • 升级到符合 Cargo.toml 约束的新版本:cargo update(会更新 Cargo.lock 中记录的精确版本)
  • 构建与运行:
    • 构建:cargo build
    • 运行:cargo run
  • 质量与文档:
    • 快速检查(不生成产物):cargo check
    • 运行测试:cargo test
    • 生成文档:cargo doc
  • 依赖可视化与清理:
    • 查看依赖树:cargo tree
    • 清理构建产物:cargo clean

三 常用工作流与命令速查

  • 初始化现有代码:cargo init
  • 代码格式化:cargo fmt
  • 静态检查(Lint):cargo clippy --all-targets -- --D warnings
  • 代码覆盖率:cargo tarpaulin --ignore-tests
  • 发布到 crates.io
    • 登录:cargo login [token]
    • 打包:cargo package
    • 发布:cargo publish
  • 卸载本地已安装二进制:cargo uninstall ripgrep(仅卸载二进制名称)

四 国内镜像与私有源配置

  • 切换 crates.io 索引镜像(编辑或创建 ~/.cargo/config):
    • 示例(清华 TUNA):
      [source.crates-io]
      registry = "https://github.com/rust-lang/crates.io-index"
      replace-with = 'tuna'
      
      [source.tuna]
      registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"
      
    • 如切换源后索引异常,可清理缓存:rm -rf ~/.cargo/.package-cache
  • 说明:上述为索引镜像,通常不影响你发布到官方 crates.io 的流程;如需私有注册表,可在 config 中新增对应 [source.xxx] 条目并在命令中使用 --registry 指定。

五 常见问题与进阶

  • 交叉编译简述:
    • 安装目标工具链:rustup target add x86_64-unknown-linux-gnu(示例)
    • 构建:cargo build --target x86_64-unknown-linux-gnu
    • 发行构建:cargo build --release --target x86_64-unknown-linux-gnu
  • 锁定文件与团队协作:
    • Cargo.lock 记录了依赖的精确版本与依赖树,建议纳入版本控制,确保团队成员与 CI 使用一致依赖。
  • 清理与产物目录:
    • 清理:cargo clean
    • 自定义产物目录:通过环境变量 CARGO_TARGET_DIR 或配置项 build.target-dir 指定(例如 CARGO_TARGET_DIR=target-ci cargo build)。

0