在执行cargo install时,有时会碰到Missing manifest in toolchain xxx的报错.本文提供修复这类错误的一个思路.
问题描述
在我使用cargp安装mdbook依赖时,我遇到了奇怪的报错,如下:
\rustbook_zhcn-main> cargo install mdbook
error: process didn't exit successfully: rustc -vV (exit code: 1)
--- stderr
error: Missing manifest in toolchain '1.90-aarch64-pc-windows-msvc'
报错原因
在说明错误原因之前,先要解释下rust toolchain的概念.
Rust工具链 (Rust toolchain)是rust编译(rustc),构建项目,依赖包管理(cargo)等相关工具的集合.rustup事实上是rust及rust工具链的安装管理工具.(安装rust的过程其实等价于安装rust工具链的过程.).
在这个错误中,rustc在调用工具链中其它编译构建依赖也就是1.90-aarch64-pc-windows-msvc)时发生了错误,标准库stderr传递了详细错误:“Missing manifest in toolchain”,工具链中缺少依赖库.
实际上在我们执行cargo install mdbook时,cargo会自动检查构建mdbook所需的依赖,并传参给rustc,rustup等其它工具链模块,自动完成构建程序.在此过程中,rustup会自动静默下载或调用所需的工具链依赖,由于笔者在此过程中不小心断网,导致rustup没能安装1.90-aarch64-pc-windows-msvc,最终出现了error: Missing manifest in toolchain的错误.
解决方案
执行rustup update命令,重新检查工具链模块安装即可.
如果不行的话,请执行和rustup相关的错误检查步骤.
参考:
https://github.com/rust-lang/rustup/issues/4863
https://rust-lang.github.io/rustup/concepts/index.html