当前位置: 首页 > news >正文

【笔记】旧版MSYS2 环境中 Rust 升级问题及解决过程

下面是一份针对在旧版 MSYS2(安装在 D 盘)中,基于 Python 3.11 的 Poetry 虚拟环境下升级 Rust 的处理过程笔记(适用于 WIN 系统 SUNA 人工智能代理开源项目部署要求)的记录。


MSYS2 旧版环境中 Rust 升级问题及解决过程

背景

msys2-x86_64-20231026.exe     #2023年10月26日发布的版本(仅支持python3.11)

  • MSYS2 版本较旧,且安装在 D:\msys64 下。
  • 由于部署要求,使用的是 Python 3.11 的 Poetry 虚拟环境(无法降级 Python 版本,只能升级)。
  • MSYS2 默认提供的 Rust 版本较旧(通过 pacman 安装的 Rust 为 1.73.0),而部分依赖(如 maturin、clap_derive、tokenizers等)要求至少 Rust 1.74 以上。
  • 解决方案是借助官方 Rustup 工具安装最新 Rust 工具链。

问题描述

  1. Rust 版本滞后

    • 通过 MSYS2 自带的 pacman 安装的 Rust 版本为 1.73.0,不满足依赖构建要求,导致编译错误。
  2. Rustup 安装位置与路径问题

    • 官方 Rustup 安装在 C:\Users\love\.cargo\bin 下,而 MSYS2 安装在 D 盘,导致默认 PATH 设置及工具调用出现混淆。
    • 初期 MSYS2 环境中未能正确找到 Rustup 命令,仍显示系统使用旧版编译器。

 

解决过程

rustup.rs - Rust 工具链安装程序

1. 安装 Rustup

由于 MSYS2 自带的仓库中没有提供 Rustup 包,我们通过官方提供的安装程序进行安装。

  • 步骤

    1. 使用浏览器访问 rustup.rs - The Rust toolchain installer 并下载 rustup-init.exe
    2. 在 Windows 系统环境下(或在 MSYS2 终端中转到下载目录)运行 rustup-init.exe
    3. 在提示中选择 标准安装(直接回车),并在遇到“已有 Rust 安装”的警告时选择继续安装(输入 y)。
cd "E:\Downloads\Programs"
./rustup-init.exe

 

  • 提示
    尽管 MSYS2 中已通过 pacman 安装了旧版 Rust(位于 D:\msys64\mingw64\bin),但建议使用 Rustup 所管理的新工具链作为主要 Rust 环境,以解决构建依赖问题。


2. 更新 MSYS2 中的 PATH 环境变量

由于 Rustup 安装在 C:\Users\love\.cargo\bin,而 MSYS2 默认并不包含此路径,需要手动调整。

  • 临时修改 PATH(在 MSYS2 终端中执行):

    export PATH="/c/Users/love/.cargo/bin:$PATH"
    

    执行后,可验证:

    rustup --version
    

    如果能正确显示 Rustup 版本,则表明 PATH 调整成功。

  • 永久设置
    将上述 PATH 添加至 ~/.bashrc 中,使每次打开 MSYS2 终端时都自动生效:

    echo 'export PATH="/c/Users/love/.cargo/bin:$PATH"' >> ~/.bashrc
    source ~/.bashrc
    

 


3. 更新 Rust 工具链(可选)

确保在 MSYS2 中使用最新的 Rust 版本:

  • 通过 Rustup 更新:
    rustup update stable
    
  • 如有必要,在项目目录中使用覆盖命令,让 MSYS2 默认调用 Rustup 版本:
    rustup override set stable
    
  • 验证版本:
    rustc --version
    cargo --version
    
    期望输出为 Rust 1.87.0(或其他新版稳定版)和相应版本的 Cargo。

注意事项

  • Python 3.11 环境保持不变
    因为部署要求中基于旧版 MSYS2 中的 Python 3.11 的 Poetry 虚拟环境,无法降级 Python 版本。所以本次只侧重于解决 Rust 升级问题,而 Python 环境则保持原状。

  • 路径冲突问题
    由于 MSYS2 安装在 D 盘,而 Rustup 默认安装在 C 盘,对于 Windows 子系统、CMD 或 PowerShell 调用时,需额外注意 PATH 的优先级设置,确保新版本 Rust 工具链优先被调用。

  • 后续验证
    通过运行以下命令验证环境:

    rustup show
    rustc --version
    cargo --version
    

    如果输出符合预期(例如显示 Rust 1.87.0),则说明升级和配置已成功。


总结

在旧版 MSYS2(安装在 D 盘)中,由于自带的 Rust 版本较旧以及 PATH 环境变量的限制,导致了构建 Rust 依赖失败的问题。通过手动下载安装 Rustup,并在 MSYS2 中调整 PATH 变量,让系统使用 Rustup 管理的新工具链,最终成功升级到 Rust 1.87.0,从而解决了编译依赖的问题。

这份笔记记录了整个处理过程和关键步骤,供未来参考和类似环境下的故障排查使用。

如果今后遇到其它问题,也可以依此方法进行详细的排查和处理。

http://www.lqws.cn/news/186355.html

相关文章:

  • 从零实现STL哈希容器:unordered_map/unordered_set封装详解
  • 在 Kali 上打造渗透测试专用的 VSCode 环境
  • 单芯片电流采用电路分享
  • 基于nacos2.5.1的MCP服务端微服务项目开发环境配置简介
  • Komiko 视频到视频功能炸裂上线!
  • Kubernetes 从入门到精通-label标签
  • Caliper 配置文件解析:config.yaml
  • 贝叶斯深度学习!华科大《Nat. Commun.》发表BNN重大突破!
  • 04 Deep learning神经网络编程基础 梯度下降 --吴恩达
  • 一个WebRTC 分辨率动态爬升问题记录与解决过程
  • Kubernetes指标实现有效的集群监控和优化
  • 【单片机期末】串行口循环缓冲区发送
  • 单片机内部结构基础知识 FLASH相关解读
  • Flask 核心概念速览:路由、请求、响应与蓝图
  • 深入理解二叉搜索树:原理到实践
  • LeetCode 热题 100 74. 搜索二维矩阵
  • 【Linux基础知识系列】第十四篇-系统监控与性能优化
  • 使用VSCode开发Django指南
  • npm install的原理
  • 自制喜悦字贴
  • 华为×小鹏战略合作:破局智能驾驶深水区的商业逻辑深度解析
  • Qt(part1)Qpushbutton,信号与槽,对象树,自定义信号与槽,lamda表达式。
  • 使用WebSocket实时获取印度股票数据源(无调用次数限制)实战
  • QuaggaJS用法详解
  • vue生成二维码图片+文字说明
  • Vue 组件库发布实战(含 TypeScript 支持)
  • 课消管理软件,教培机构进入系统管理时代
  • 高温IC设计带来的挑战和问题
  • 深入理解 transforms.Normalize():PyTorch 图像预处理中的关键一步
  • Javascript 编程基础(5)面向对象 | 5.1、构造函数实例化对象