27

我跑去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`

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

4

3 回答 3

22

在您的系统中拥有的最标准和最可靠的方法rustfmt是确保将rustfmt组件安装在您的 Rustup 工具链中。

rustup component add rustfmt

或者对于特定的工具链:

rustup component add rustfmt --toolchain nightly-2020-06-09

夜间工具链中的测试和构建有可能会失败,这意味着它们不太可能总是有这个组件。最新的stablebeta工具链通常会根据无工具破损周政策拥有它。

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

  1. 将 Rustup 更新到最新版本后,您可能会收到消息warning: tool rustfmt is already installed。按照建议从 Cargo 的二进制文件夹中删除二进制文件。cargo uninstall rustfmt(或者rustfmt-nightly如果你安装了它)效果很好。
  2. 运行rustup update让它用自己的、托管的rustfmtcargo-fmt.
  3. 确保您希望使用的工具链已安装(例如stable
  4. 运行上面的命令,确保为该rustfmt工具链安装了组件。

完成后,调用rustfmt将按预期工作:

$ rustup run stable rustfmt --version
rustfmt 1.4.12-stable (a828ffea 2020-03-11)

或者通过 Cargo 子命令:

$ cargo fmt --version
rustfmt 1.4.12-stable (a828ffea 2020-03-11)

在早期,rustfmt由 Rustup 管理可能会有点混乱,因为 Rustup 并不总是有rustfmt,并且仍然经常作为预览组件出现,必须以名称安装rustfmt-preview。关于这个主题有一些相关的问题和 PR(#1305#1310)。

于 2017-12-22T17:33:51.307 回答
18

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

你需要做的是:

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

在你一切顺利之后:)

于 2018-05-15T13:59:59.257 回答
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

于 2018-10-29T03:34:07.023 回答