Rust依赖下载慢+Blocking
覆盖默认的镜像地址
~~直接使用新注册服务来替代默认的 ~~crates.io。
在 $HOME/.cargo/config.toml 添加以下内容:
[source.crates-io] replace-with = 'ustc'
[source.ustc] registry = "git://mirrors.ustc.edu.cn/crates.io-index"
首先,创建一个新的镜像源 [source.ustc],然后将默认的 crates-io 替换成新的镜像源: replace-with = 'ustc'。
下载卡住Blocking
下载卡住其实就一个原因:下载太慢了。
根据经验来看,卡住不动往往发生在更新索引时。毕竟 Rust 的包越来越多,索引也越来越大,如果不使用国内镜像,卡住还蛮正常的,好在,我们也无需经常更新索引 😛
Blocking waiting for file lock on package cache
不过这里有一个坑,需要大家注意,如果你同时打开了 VSCODE 和命令行,然后修改了 Cargo.toml,此时 VSCODE 的 rust-analyzer 插件会自动检测到依赖的变更,去下载新的依赖。
在 VSCODE 下载的过程中( 特别是更新索引,可能会耗时很久),假如你又在命令行中运行类似 cargo run 或者 cargo build 的命令,就会提示一行有些看不太懂的内容:
$ cargo build Blocking waiting for file lock on package cache Blocking waiting for file lock on package cache
其实这个报错就是因为 VSCODE 的下载太慢了,而且该下载构建还锁住了当前的项目,导致你无法在另一个地方再次进行构建。
解决办法也很简单:
耐心等待持有锁的用户构建完成(不太现实,搜索这个问题就是想快速解决:))
增加下载速度,见前面内容,并且强行停止正在构建的进程(例如杀掉 IDE 使用的 rust-analyzer 插件进程),然后删除 $HOME/.cargo/.package_cache 目录

浙公网安备 33010602011771号