【问题标题】:Why is my rustup rust-toolchain file not overriding the default?为什么我的 rustup rust-toolchain 文件没有覆盖默认值?
【发布时间】:2021-03-28 15:01:46
【问题描述】:

我想使用 Rust “夜间”构建来处理 Arrow 和 Datafusion。根据this post 和 rustup book,我应该能够将一个 rust-toolchain 文件放在项目的主目录中,其中只包含“nightly”这个词,这应该使它成为该项目的默认构建。但是,这不起作用。

对我所缺少的有什么建议吗?

当我检查默认值时,我发现它正在使用“稳定”构建。

(base) Apples-MBP:data_fusion_tutorial Daniel$ rustup default
stable-x86_64-apple-darwin (default) 

这是我的项目目录的样子:

(base) Apples-MBP:data_fusion_tutorial Daniel$ ls -a
.       ..      .git        .gitignore  Cargo.lock  Cargo.toml  rust-toolchain  src     target

如果我跑步

rustup override set nightly

然后项目构建正常,但默认仍然是“稳定”。

【问题讨论】:

    标签: rust toolchain nightly-build rustup


    【解决方案1】:

    rustup default 打印全局默认工具链。您可以运行rustup show 来获取当前目录的活动工具链:

    $ rustup show
    
    installed toolchains
    --------------------
    stable-x86_64-unknown-linux-gnu (default)
    nightly-x86_64-unknown-linux-gnu
    
    active toolchain
    ----------------
    rustc 1.48.0 (7eac88abb 2020-11-16)
    

    设置目录覆盖将修改活动工具链:

    $ rustup override set nightly
    $ rustup show
    
    installed toolchains
    --------------------
    stable-x86_64-unknown-linux-gnu (default)
    nightly-x86_64-unknown-linux-gnu
    
    active toolchain
    ----------------
    nightly-x86_64-unknown-linux-gnu (directory override for '/currentproject')
    rustc 1.50.0-nightly (e792288df 2020-12-05)
    

    请注意 default 工具链仍然是多么稳定,但 active 工具链已更改为 nightly。要更改全局默认值,可以运行default 命令:

    $ rustup default nightly
    $ rustup default
    nightly-x86_64-unknown-linux-gnu (default)
    

    【讨论】:

    • 感谢Ibraheem Ahmed 指出rustup show 提供有关活动与默认构建的信息。但是,我想使用 rustup-toolchain 文件来指定构建,以便在我共享我的存储库时使用正确的构建。关于如何让 rustup 查看 rustup-toolchain 文件的任何想法?
    • @fox-daniel rustup 会看到 rust-toolchain 文件并将其用作活动工具链。请参阅rustup overrides 了解更多信息。
    • 我知道它应该看到 rustup-toolchain 文件,但我不认为它是。我创建了一个 rustup-toolchain 文件,其中只有“nightly”(文件中没有使用引号),然后运行rustup show。它表明 stable 是默认和活动版本。同样,我知道我可以使用覆盖命令,但我想要一个解决方案,允许 repo 的克隆将 nightly 作为默认值并处于活动状态,而其他使用的不需要指定覆盖。似乎它不是每晚使用。有什么建议吗?
    【解决方案2】:

    我也有类似的问题。

    $ cat rust-toolchain.toml
    [toolchain]
    channel = "nightly"
    $ rustup show
    Default host: aarch64-apple-darwin
    rustup home:  /Users/n8henrie/.rustup
    
    installed toolchains
    --------------------
    
    stable-aarch64-apple-darwin (default)
    nightly-aarch64-apple-darwin
    
    active toolchain
    ----------------
    
    stable-aarch64-apple-darwin (default)
    rustc 1.50.0 (cb75ad5db 2021-02-10)
    

    有趣的是,如果我删除 .toml 扩展名,它会起作用:

    $ mv rust-toolchain{.toml,}
    $ rustup show
    Default host: aarch64-apple-darwin
    rustup home:  /Users/n8henrie/.rustup
    
    installed toolchains
    --------------------
    
    stable-aarch64-apple-darwin (default)
    nightly-aarch64-apple-darwin
    
    active toolchain
    ----------------
    
    nightly-aarch64-apple-darwin (overridden by '/path/to/cwd/rust-toolchain')
    rustc 1.52.0-nightly (3a5d45f68 2021-03-09)
    

    当然looks like toml 扩展应该没问题,不知道为什么它不起作用:

    在这些情况下,工具链可以在项目目录中名为 rust-toolchain.toml 或 rust-toolchain 的文件中命名。

    它也适用于我只用 nightly 这个词,所以我不确定为什么它不适合你,但似乎这里可能有一些怪癖。

    也许您可以尝试使用名为rust-toolchain 的文件的TOML 语法?

    编辑:看起来.toml 扩展名是recent development,也许这本书的更新是在工具更新之前发布的。

    EDIT2:最近的 rustup 版本是 20201202 的 1.23.1,这是我正在运行的,所以我的问题可能就在这里。你运行的是什么版本的 rustup?

    https://github.com/rust-lang/rustup/releases

    【讨论】:

    • 删除 .toml 扩展对我有用。我应该尽快更新 rustup。
    【解决方案3】:

    做一个rustup update,这应该可以工作。

    【讨论】:

      猜你喜欢
      • 2020-01-05
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 2020-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多