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正常加载环境变量就可以了。

相关推荐
子兮曰4 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰4 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
小羊没烦恼!4 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
爱勇宝4 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
胡写代码4 天前
别再前后端各写一套表单校验了
java·后端
伞伞悦读4 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
大勇前进4 天前
原生 PHP 还是 Laravel?小项目到底要不要上框架
后端
yuzhi_liu4 天前
我用 LangGraph4j 实现 Multi-Agent Supervisor
后端
alsmile4 天前
Node-RED 之外,国产规则引擎的新方案:基于标准语法,Go 先行实现
后端·开源·go
大白804 天前
PHP 内存溢出排查思路:看懂报错日志,精准定位问题
后端