misonoteApp Center

~/.cargo/registry 太大能删吗?Rust Cargo 缓存清理

可以放心删会自动重新生成;Thermo 直接删除。

先退出: cargo

位置

  • ~/.cargo/registry/cache
  • ~/.cargo/registry/src
  • ~/.cargo/git/checkouts

这是什么

Cargo 从 crates.io 下载的 .crate 压缩包存在 registry/cache,解压后的源码放在 registry/src,用 Git 地址引用的依赖则检出到 git/checkouts。所有 Rust 项目共享这些目录。

为什么会这么大

每个依赖的每个版本都会同时保留压缩包和解压后的源码,Git 依赖还会按提交各检出一份。Cargo 默认不会主动删除旧版本,项目一多就越积越大。

能删吗?删了会怎样

安全。删除后不影响已经编译好的程序,下次构建时 Cargo 会重新下载并解压所需的依赖。清理前先结束正在运行的 cargo 命令,避免构建中途找不到文件。离线构建前不要清理。

小提示

Rust 项目里的 target 目录往往比这些缓存大得多,它不在此项中,可以在项目里用 cargo 自带的 clean 子命令清理。

先看看占了多少

du -sh "$HOME/.cargo/registry/cache" "$HOME/.cargo/registry/src" "$HOME/.cargo/git/checkouts" 2>/dev/null

手动删除

在「终端」里执行。删除不可撤销,执行前请确认路径。

rm -rf "$HOME/.cargo/registry/cache"/*
rm -rf "$HOME/.cargo/registry/src"/*
rm -rf "$HOME/.cargo/git/checkouts"/*