2017-12-22 106 views
6

tôi đã chạy rustup update để cập nhật toolchain của tôi và nhìn thấy hai cảnh báo:lỗi: toolchain 'ổn định-x86_64-apple-darwin' không có nhị phân 'rustfmt`

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. 

Tôi làm theo các hướng dẫn trong thông báo cảnh báo, sau đó cố gắng chạy lại rustfmt. Tôi đã gặp lỗi

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

Điều gì đã xảy ra và làm cách nào để khắc phục sự cố?

+0

Tôi nghĩ phần đầu tiên của câu hỏi của bạn không có liên quan - ngay bây giờ bạn chỉ gặp sự cố với 'rustfmt' từ cài đặt dọn dẹp sạch sẽ. Tôi cũng vậy .. – theicfire

Trả lời

6

Với các bước bạn đã thực hiện, Rustup đã được định cấu hình để quản lý các tệp nhị phân rustfmt của bạn. Điều này có nghĩa là chúng có thể được cập nhật tự động cùng với các thanh công cụ của bạn thay vì dựa vào cargo install. Cái thiếu ở đây là thành phần rustfmt thực tế mà Rustup đang cố thực hiện.

Để cho Rustup quản lý rustfmt, xem các bước sau:

  1. Khi bạn cập nhật Rustup lên phiên bản mới nhất, bạn có thể nhận được thông báo warning: tool rustfmt is already installed. Xóa các tệp nhị phân khỏi thư mục nhị phân của Cargo, như được đề xuất. cargo uninstall rustfmt (hoặc rustfmt-nightly nếu bạn đã cài đặt) hoạt động tốt.
  2. Chạy rustup update để cho phép nó điền vào các tệp nhị phân đã xóa với riêng, được quản lý rustfmtcargo-fmt.
  3. Khi thực hiện xong, bạn vẫn cần phải cài đặt thành phần rustfmt-preview cho mỗi chuỗi công cụ mà bạn sẽ làm việc. Không phải tất cả các toolchains có thể có nó vào lúc này, nhưng nightly-2017-12-20. Do đó, hãy chắc chắn rằng toolchain này được cài đặt, sau đó:
$ rustup component add rustfmt-preview --toolchain nightly-2017-12-20 

Với điều đó được thực hiện, kêu gọi rustfmt sử dụng toolchain nên hoạt động:

$ rustup run nightly-2017-12-20 rustfmt --version 

0.3.2-nightly (8db33ff 2017-12-15) 

Trạng thái hiện tại của việc sử dụng rustfmt quản lý bởi Rustup có thể hơi khó hiểu. Có một số vấn đề liên quan và PR về chủ đề (#1305#1310), và sau đó cung cấp các manh mối cần thiết để thực hiện công việc này đúng cách.

+0

Để thêm 'rustfmt-preview' vào chuỗi công cụ đó, bạn cũng sẽ cần cài đặt chuỗi công cụ:' rustup install night-2017-12-20-x86_64-apple-darwin' – theicfire

+0

@theicfire Chắc chắn, tôi đã giả định rằng chuỗi công cụ đã được cài đặt trước đó. Có lẽ tôi có thể làm rõ hơn. –

Các vấn đề liên quan