Error: toolchain 'stable-x86_64-apple-darwin' не имеет двоичного `rustfmt`

Я запустил 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`

Что пошло не так и как я могу это исправить?

Ответ 1

С помощью шагов, которые вы выполнили, Rustup уже настроен для управления вашими rustfmt файлами rustfmt. Это означает, что они могут автоматически обновляться вместе со своими инструментальными целями вместо того, чтобы полагаться на cargo install. Что здесь отсутствует фактическая rustfmt компонент, который Rustup пытается выполнить.

Чтобы Rustup управлял rustfmt, см. Следующие шаги:

  1. Как только вы обновите Rustup до последней версии, вы можете получить сообщение warning: tool rustfmt is already installed. Удалите двоичные файлы из двоичной папки Cargo, как это было предложено. cargo uninstall rustfmt (или rustfmt-nightly если вы его установили) работает хорошо.
  2. Запустите rustup update чтобы он заполнил удаленные двоичные файлы с помощью собственного управляемого rustfmt и rustfmt cargo-fmt.
  3. После этого вам все равно нужно установить компонент rustfmt-preview для каждой инструментальной цепочки, с которой вы будете работать. Не все инструментальные средства предоставляют этот компонент на данный момент, но последние stable инструментальные цепочки обязательно будут иметь его. Следовательно, убедитесь, что эта инструментальная цепочка установлена, а затем:
$ rustup component add rustfmt-preview

При этом вызов rustfmt с использованием этой инструментальной цепочки должен работать:

$ rustup run stable rustfmt --version

rustfmt 0.99.4-stable (1c40881 2018-08-27)

Текущее состояние использования rustfmt управляемого Rustup, может быть немного запутанным. Есть несколько релевантных вопросов и PR по этому вопросу (№ 1305 и № 1310), и после них приведены необходимые подсказки для правильной работы.

Ответ 2

Ошибка сообщает вам, что у вас нет rustfmt-preview который не установлен на фактическом *-apple-darwin.

вам нужно сделать следующее:

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

после того, как вам будет хорошо идти :)

Ответ 3

$ 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