每晚安装最新的rust都会抱怨缺少rls组件



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

Cargo.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',我不知道如何解决这个

如有任何帮助,将不胜感激

很抱歉出现文本墙,如果您只想快速解决问题,请参阅下面的问题解决方案。你也可以看看rustup书,它包含了关于这类问题的信息。


您正在尝试安装Rust的夜间版本。在夜间版本中,Rust的非必要组件(如Rust Language Server(或简称rls((的可用性得不到保证——如果它们无法构建,则夜间版本将不提供它们。你可以在这里看到,rls确实不是最后几个谎言的一部分。夜间附带rls的最后一天是2021-05-18,这是前一天的构建,所以2021-05-17(有点烦人,但这似乎是可以接受的行为(。

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

你的问题的解决方案

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

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

      • 即使缺少组件,也可以使用--force标志来rustup工具链安装,以强制其安装最新版本
      • 使用--profile标志来锈蚀工具链安装,以使用不包含丢失组件的其他概要文件。例如,--profile=minimal应该始终有效,因为需要存在最小集。有关更多详细信息,请参阅配置文件一章
      • 安装包含所需组件的特定日期。例如,rustup工具链安装nightly-200-07-27。然后可以使用替代来固定到该特定版本
  • 如果你确实需要rls,你就有点手头紧了。您可能想要为您的项目使用覆盖,实际上使用不同的Rust构建来构建代码和运行rls。然而,这可能不起作用——rls可能需要建立您的项目依赖关系以实现自动完成,而Rocket不允许使用旧的nightlies。对于这种情况,我真的没有解决方案——你可能需要使用旧版本的Rocket,或者暂时停止使用rls,直到有新的Rust夜间发货,再次使用rls

相关内容

  • 没有找到相关文章

最新更新