5

尝试编译:https ://github.com/SergioBenitez/Rocket/tree/master/examples/hello

货运.toml

[dependencies]
rocket = "0.4.10"

抱怨我每晚都需要生锈

$ cargo build
...
  Error: Rocket (core) requires a more recent version of rustc.
  Installed version: 1.54.0 (2021-05-17)
  Minimum required:  1.54.0-nightly (2021-05-18)

我已经完成了本地目录覆盖

$ rustup override set nightly

我每晚跑步 2021-05-17 但我需要 2021-05-18

$ rustup show
...
active toolchain
----------------

nightly-x86_64-unknown-linux-gnu (directory override for '/<redacted>')
rustc 1.54.0-nightly (3e99439f4 2021-05-17)

我已经尝试了各种命令来获取最近的每晚

$ rustup update
$ rustup update nightly
$ rustup toolchain install nightly-2021-05-18

我做的时候有一些奇怪的东西rustup update nightly

$ rustup update nightly 
info: syncing channel updates for 'nightly-x86_64-unknown-linux-gnu'
info: latest update on 2021-05-23, rust version 1.54.0-nightly (e4ca1662f 2021-05-22)
info: skipping nightly which is missing installed component 'rls'
info: syncing channel updates for 'nightly-2021-05-22-x86_64-unknown-linux-gnu'
info: latest update on 2021-05-22, rust version 1.54.0-nightly (5dc8789e3 2021-05-21)
info: skipping nightly which is missing installed component 'rls'
info: syncing channel updates for 'nightly-2021-05-21-x86_64-unknown-linux-gnu'
info: latest update on 2021-05-21, rust version 1.54.0-nightly (40d230204 2021-05-20)
info: skipping nightly which is missing installed component 'rls'
info: syncing channel updates for 'nightly-2021-05-20-x86_64-unknown-linux-gnu'
info: latest update on 2021-05-20, rust version 1.54.0-nightly (f94942d84 2021-05-19)
info: skipping nightly which is missing installed component 'rls'
info: syncing channel updates for 'nightly-2021-05-19-x86_64-unknown-linux-gnu'
info: latest update on 2021-05-19, rust version 1.54.0-nightly (4e3e6db01 2021-05-18)
info: skipping nightly which is missing installed component 'rls'
info: syncing channel updates for 'nightly-2021-05-18-x86_64-unknown-linux-gnu'

  nightly-x86_64-unknown-linux-gnu unchanged - rustc 1.54.0-nightly (3e99439f4 2021-05-17)

抱怨skipping nightly which is missing installed component 'rls',我不知道如何解决这个问题

任何帮助,将不胜感激

4

1 回答 1

5

抱歉,文字墙,如果您只想快速修复,请参阅下面的问题解决方案。您还可以查看rustup book,它包含有关此类问题的信息。


您正在尝试安装 Rust 的夜间版本。在 nightly 版本中,不保证 Rust 的非必要组件(例如Rust 语言服务器(或简称rls))的可用性——如果它们无法构建,则 nightly 会在没有它们的情况下发货。你可以在这里看到,这rls确实不是最近几晚的一部分。nightly 附带的最后一天rls2021-05-18,这是前一天的构建,所以2021-05-17(有点烦人,但这似乎是可以接受的行为)。

您的 rustup 安装似乎配置为包含rls. 因此,当您告诉rustup更新您的nightly工具链时,rustup 会选择最新的每晚包含rls. 没有比您当前安装的更新的 nightlies nightly-2021-05-17,因此rustup不会更新工具链。

您的问题的解决方案

  • 如果您不需要rls(仅在 IDE 和类似的东西中自动完成需要),您的问题有多种解决方案:
    • rls您可以从夜间工具链中删除该组件:rustup component remove --toolchain nightly rls
    • rustup 书还有一些解决方案:

      如果 [以前安装的组件] 丢失,rustup 将自动搜索包含所需组件的旧版本。有几种方法可以改变这种行为:

      • 使用 --force 标志 rustup toolchain install 强制它安装最新版本,即使缺少组件也是如此。
      • 使用 --profile 标志来 rustup toolchain install 以使用不包含缺少的组件的不同配置文件。例如, --profile=minimal 应该始终有效,因为需要存在最小集。有关详细信息,请参阅配置文件一章。
      • 安装包含您需要的组件的特定日期。例如,rustup toolchain install nightly-2020-07-27。然后,您可以使用覆盖来固定到该特定版本。
  • 如果你确实需要rls,你就有点紧张了。您可能希望为您的项目使用覆盖,实际上使用不同的 Rust 构建来构建您的代码和运行rls. 但是,这可能行不通——rls可能需要为自动完成构建项目依赖项,而 Rocket 不允许在较旧的 nightlies 中这样做。对于这种情况,我真的没有解决方案——你可能需要继续使用旧版本的 Rocket,或者暂时停止使用rls,直到有更新的 Rust nightlyrls再次发布。
于 2021-05-23T11:36:39.507 回答