正在尝试编译: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