CentOS7 安装 rust 1.82.0

CentOS7 安装 rust 1.82.0

我在CentOS7.9中安装rust遇到报错版本低,再升级版本的过程中遇到诸多问题,简单记录。

遇到的问题

提示版本低

复制代码
centos7 安装 ERROR: Rust 1.75.0 or newer required.

Rust version 1.72.1 was found.

原因是 CentOS7 的默认的软件源中的rust是1.72.1版本。下载不到1.75版本。

解决方案1--不管用

在网上找了很多个版本的rust的rpm包,但是由于CentOS7停止维护了,所以rpm包都是CentOS8和CentOS9之后的。下载了之后安装的时候会报错依赖缺失。

下载地址:

https://pkgs.org/download/rust

https://rpmfind.net/linux/rpm2html/search.php?query=rust

复制代码
root@22_150:~# rpm -ivh rust-1.75.0-1.module_el8.10.0+3770+3cd00e1b.x86_64.rpm 
warning: rust-1.75.0-1.module_el8.10.0+3770+3cd00e1b.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID ced7258b: NOKEY
error: Failed dependencies:
	libLLVM-17.so()(64bit) is needed by rust-1.75.0-1.module_el8.10.0+3770+3cd00e1b.x86_64
	libLLVM-17.so(LLVM_17)(64bit) is needed by rust-1.75.0-1.module_el8.10.0+3770+3cd00e1b.x86_64
	libc.so.6(GLIBC_2.18)(64bit) is needed by rust-1.75.0-1.module_el8.10.0+3770+3cd00e1b.x86_64
	libc.so.6(GLIBC_2.25)(64bit) is needed by rust-1.75.0-1.module_el8.10.0+3770+3cd00e1b.x86_64
	libc.so.6(GLIBC_2.27)(64bit) is needed by rust-1.75.0-1.module_el8.10.0+3770+3cd00e1b.x86_64
	libc.so.6(GLIBC_2.28)(64bit) is needed by rust-1.75.0-1.module_el8.10.0+3770+3cd00e1b.x86_64
	libstdc++.so.6(CXXABI_1.3.9)(64bit) is needed by rust-1.75.0-1.module_el8.10.0+3770+3cd00e1b.x86_64
	libstdc++.so.6(GLIBCXX_3.4.21)(64bit) is needed by rust-1.75.0-1.module_el8.10.0+3770+3cd00e1b.x86_64
	rust-std-static(x86-64) = 1.75.0-1.module_el8.10.0+3770+3cd00e1b is needed by rust-1.75.0-1.module_el8.10.0+3770+3cd00e1b.x86_64

基于这种情况,升级libc和其他的组件会导致系统崩溃,所以不能采用这种方式。

解决方案2--管用

只能采用最原始的源码编译的方式了。这一步虽然复杂,但是可以解决。

首先去github下载一个最新的源码包。我现在这个时间能看到的最新版是1.88,但是我下载1.82的版本。

下载地址:

https://forge.rust-lang.org/infra/other-installation-methods.html

https://github.com/rust-lang/rust/archive/refs/tags/1.82.0.tar.gz

解压之后会看到目录中包含一个 configure,运行

复制代码
root@22_150:~/rust-1.82.0# ls
build       CODE_OF_CONDUCT.md   config.toml      COPYRIGHT   LICENSE-APACHE  Makefile     REUSE.toml      src             x
Cargo.lock  compiler             configure        INSTALL.md  LICENSE-MIT     README.md    rust-bors.toml  tests           x.ps1
Cargo.toml  config.example.toml  CONTRIBUTING.md  library     LICENSES        RELEASES.md  rustfmt.toml    triagebot.toml  x.py
root@22_150:~/rust-1.82.0# 
root@22_150:~/rust-1.82.0# 
root@22_150:~/rust-1.82.0# 
root@22_150:~/rust-1.82.0# 
root@22_150:~/rust-1.82.0# ./configure 
configure: processing command line
configure: 
configure: build.configure-args := []
configure: profile              := dist
configure: 
configure: writing `config.toml` in current directory
configure: 
configure: run `python /root/rust-1.82.0/x.py --help`

下面提示执行 python /root/rust-1.82.0/x.py --help

执行这个命令超级慢,挂了梯子就快了。

执行的过程,大概就是下载三个文件,文件位置:/root/rust-1.82.0/build/cache/2024-09-05/。

我们可以手动操作者三个文件,手动安装。

复制代码
https://static.rust-lang.org/dist/2024-09-05/rust-std-1.81.0-x86_64-unknown-linux-gnu.tar.xz
https://static.rust-lang.org/dist/2024-09-05/rust-std-1.81.0-x86_64-unknown-linux-gnu.tar.xz
https://static.rust-lang.org/dist/2024-09-05/rustc-1.81.0-x86_64-unknown-linux-gnu.tar.xz

每一个文件都解压,然后执行里面的 install.sh,即可。

复制代码
root@22_150:~/rust-1.82.0/build/cache# cd rustc-1.81.0-x86_64-unknown-linux-gnu
root@22_150:~/rust-1.82.0/build/cache/rustc-1.81.0-x86_64-unknown-linux-gnu# ls
components  COPYRIGHT  git-commit-hash  git-commit-info  install.sh  LICENSE-APACHE  LICENSE-MIT  README.md  rustc  rust-installer-version  version
root@22_150:~/rust-1.82.0/build/cache/rustc-1.81.0-x86_64-unknown-linux-gnu# ./install.sh 
install: uninstalling component 'rustc'
install: creating uninstall script at /usr/local/lib/rustlib/uninstall.sh
install: installing component 'rustc'

    rustc installed.

root@22_150:~/rust-1.82.0/build/cache/rustc-1.81.0-x86_64-unknown-linux-gnu# 

提示安装完。三个文件一样的操作即可。

系统重启之后就正常了。不重启也行,新开一个shell正常加载环境变量就可以了。

相关推荐
霸道流氓气质14 分钟前
基于 Spring @Profile 的 MQ 消费者按需开关设计
java·后端·spring
Chloe.Zz15 分钟前
一篇入门Agent
开发语言·前端·javascript
余醉 | dtminer26 分钟前
3337 OTU×999置换:群落构建mBio 高分沉积物
开发语言·r语言·微生物学
白杨尚青27 分钟前
C++入门篇(十八):模板进阶——非类型参数、特化全家桶与分离编译(收官篇)
开发语言·c++·笔记·模板·偏特化·分离编译
qetfw1 小时前
Bash 内置与外部命令:type、command 与 builtin 验证
linux·开发语言·bash
Dovis(誓平步青云)1 小时前
车辆进入隧道后信号断开,座舱旅程怎样补回事件
java·开发语言·前端·数据库·电脑
逆风优雅1 小时前
nestjs middleware 接口请求日志
后端·js
Wzx1980121 小时前
Python Agent 短期记忆设计:从对话历史到 LangGraph Checkpointer
开发语言·python
是枚小菜鸡儿吖1 小时前
听歌截图太普通?我把MusicCard部署到极空间,把歌曲做成随时可开的音乐海报页
服务器·人工智能·后端·ai·大模型