【问题标题】:Can't install rustc version 1.7.0 with apt无法使用 apt 安装 rustc 版本 1.7.0
【发布时间】:2022-01-25 01:38:08
【问题描述】:

我正在尝试在 Ubuntu 20.1 上安装 Pachev_FTP server 我需要在系统上安装 rustc 才能使用它。如安装指南中所述,我需要 rustc 版本1.7.0。但是当我使用apt install rustc 安装 rustc 时,它安装了版本1.53.0。所以我关注this guide 并尝试安装正确的版本

apt install rustc=1.7.0

但它给了我一个错误说E: Version '1.7.0' for 'rustc' was not found。如何安装正确版本的 rustc?

【问题讨论】:

  • 如果你只使用rustc 1.53.0 版本编译这个项目会发生什么?请注意,此项目四年未更新:rustc 版本 1.7.0 可能是该项目活动时的当前版本。另请注意,该项目有一个已报告的漏洞 (github.com/pachev/pachev_ftp/issues/4),因此我强烈建议避免使用它:改用替代 FTP 服务器。
  • 当我安装版本 1.53.0 时运行 cargo build --release 它在编译 slog (v1.5.2) 时出错说 error: could not compile slog。我也知道这个漏洞。我正在尝试重现这一点。我也跑了 ``cargo test` ,它说同样的事情时出错。
  • 我按照这些步骤安装了 1.7.0 版。但是我在运行命令cargo build --release 时仍然出错。这次它声明failed to parse registry's information for: slogCaused by: the given version requirement is invalid。不确定问题是否与依赖 slog (v1.5.2) 本身的 rust 版本有关。
  • 我自己从未使用过 Rust。我猜在线包存储库从 Rust 1.7.0 开始改变了它的 API,所以旧版本的 Rust 不能再从中打包。

标签: ubuntu rust-cargo apt


【解决方案1】:

事实证明,如果您更新其中一个依赖项,该项目将使用最新版本的 Rust(撰写本文时为 1.57.0)进行编译:

  • 编辑Cargo.toml并将slog="1.5.2"行更改为slog="1.7.1"
  • 通过运行cargo generate-lockfile 更新Cargo.lock 文件。
  • 重新运行cargo build --release

我收到了 21 条警告,但它至少可以编译。

此包无法在 Windows 上编译,因为它需要一个不适用于 Windows 的包。


请注意,如 cmets 中所述,此项目存在未修补的安全漏洞。您似乎很清楚这一点,并且尝试构建此项目只是为了练习重现此漏洞,而不是实际使用它来提供文件。

【讨论】:

    【解决方案2】:

    就像Luke Woodward 提到的那样,我可以通过关注this 来安装 rust 1.7.0 版

    1. 卸载初始 rustc 安装(如果已安装)
    apt autoremove rustc
    
    1. 安装rustup
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    
    1. ~/.cargo/bin 添加到 $PATH(将此添加到您的 .bashrc(或您的源文件)以使其永久化)
    export PATH=~/.cargo/bin:$PATH
    
    1. 安装所需版本的rust
    rustup default 1.7.0
    

    【讨论】:

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