错误:工具链'stable-x86_64-apple-darwin'没有二进制`rustfmt`

时间:2017-12-22 17:11:54

标签: rust rustup

我已经运行rustup update来更新我的工具链并看到两个警告:

warning: tool `rustfmt` is already installed, remove it from `/Users/<username>/.cargo/bin`, then run `rustup update` to have rustup manage this tool.
warning: tool `cargo-fmt` is already installed, remove it from `/Users/<username>/.cargo/bin`, then run `rustup update` to have rustup manage this tool.

我按照警告消息中的说明操作,然后再次尝试运行rustfmt。我收到了错误

error: toolchain 'stable-x86_64-apple-darwin' does not have the binary rustfmt`

出了什么问题,我该如何解决?

3 个答案:

答案 0 :(得分:21)

根据您执行的步骤,Rustup已配置为管理您的rustfmt二进制文件。这意味着它们可以与您的工具链一起自动更新,而不是依赖cargo install。这里缺少的是Rustup试图执行的实际rustfmt组件。

为了让Rustup管理rustfmt,请参阅以下步骤:

  1. 将Rustup更新到最新版本后,您可能会收到消息warning: tool rustfmt is already installed。按照建议从Cargo的二进制文件夹中删除二进制文件。 cargo uninstall rustfmt(如果您安装了rustfmt-nightly,则效果良好。
  2. 运行rustup update,让它用自己的托管rustfmtcargo-fmt填写已删除的二进制文件。
  3. 完成后,您仍需要为将要使用的每个工具链安装rustfmt-preview组件。并非所有工具链都会暂时提供此组件,但最新的stable工具链肯定会拥有它。因此,请确保已安装此工具链,然后:
  4. $ rustup component add rustfmt-preview
    

    完成后,使用该工具链调用rustfmt应该有效:

    $ rustup run stable rustfmt --version
    
    rustfmt 0.99.4-stable (1c40881 2018-08-27)
    

    使用Rustup管理的rustfmt的当前状态可能有点令人困惑。关于这个主题有一些相关的问题和PR(#1305#1310),并且它们之后提供了使这项工作正常运行的必要线索。

答案 1 :(得分:18)

错误告诉您,实际rustfmt-preview上没有安装*-apple-darwin

您需要做的是:

rustup component add rustfmt-preview --toolchain stable-x86_64-apple-darwin

在你好好去之后:)

答案 2 :(得分:1)

$ rustup run stable rustfmt --version
error: `toolchain 'stable-x86_64-pc-windows-msvc' does not have th`e binary `rustfmt.exe`

$ rustup component remove rustfmt-preview --toolchain=stable-x86_64-pc-windows-msvc
info: removing component 'rustfmt-preview'
warning: during uninstall component rustfmt-preview-x86_64-pc-windows-msvc was not found

$ rustup component add rustfmt-preview --toolchain=stable-x86_64-pc-windows-msvc
info: downloading component 'rustfmt-preview'
info: installing component 'rustfmt-preview'

$ rustup run stable rustfmt --version
rustfmt 0.99.1-stable (da17b689 2018-08-04)

https://users.rust-lang.org/t/problem-with-rustfmt-on-stable/15165/7