货物 +每夜版 错误:没有这个子命令

7

在Ubuntu 18.04中执行cargo +nightly install --git https://github.com/alexcrichton/wasm-gc --force命令时,出现以下错误:

错误:没有这个子命令:+nightly

我的系统有以下夜间版本:

rustc 1.47.0-nightly

 cargo 1.47.0-nightly install --git https://github.com/alexcrichton/wasm-gc --force

即使执行以上命令,仍然会抛出类似的错误!

命令1:rustup toolchain install nightly

命令2:rustup update

即使按照社区的建议运行这些命令,错误仍未解决。我是rust的新手,无法通过rustup将cargo链接到已安装的夜版。

系统详细信息

cargo版本:1.43.0

rustup版本:1.22.1 (b01adbbc3 2020-07-08)

命令3:

which cargo  : /usr/bin/cargo

1
你能发布 which cargo 的输出吗?这看起来可能是因为你的软件包管理器中有 Cargo,或者手动安装的 Cargo 优先于 rustup 的 cargo 别名。 - justinas
我同意@justinas的观点,当前的cargo版本是1.45.1而不是1.43.0。考虑到您正在使用ubuntu并且它确实捆绑了cargo 但不是rustup,这很可能是路径冲突,rustup正在一个位置安装cargo(和其他内容),但您正在使用发行版提供的另一个cargo。在这种情况下,您应该删除发行版提供的cargo,或者至少修复您的PATH,使得由rustup安装的cargo优先。 - Masklinn
2个回答

12

which cargo 打印出 /usr/bin/cargo 表示它默认使用你从操作系统的软件包管理器(apt)安装的 Cargo。

使用工具链版本(如 cargo +nightly)的调用不是 Cargo 的特性,而是 Rustup 的特性。实际上,Rustup 的 cargo 是一个链接到 rustup 的命令,然后再调用存储在 .rustup/toolchains 下的“真正的” cargo。

最简单的解决方法是卸载你从 Ubuntu 软件仓库获取的 Cargo:

$ apt remove cargo

否则,你可以尝试操作你的PATH,使得/home/<your_username>/.cargo/bin/usr/bin之前。
如果你还没有安装rustup,你需要安装它。
$ brew install rustup-init # OSX
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh  # Ubuntu/Debian

然后配置rustup,你可以将配置设置为默认值以开始。
$ rustup-init

终于,您可以安装特定版本的Rust,例如夜版。
$ rustup -v install nightly

1

我使用的是Mac,而不是apt,所以我只需要引用cargo的完整路径就可以了。

$HOME/.cargo/bin/cargo +nightly --git https://github.com/alexcrichton/wasm-gc

希望这能帮到某人


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接