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

【笔记】旧版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,从而解决了编译依赖的问题。

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

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

相关文章:

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

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

centos查看开启关闭防火墙状态

执行:systemctl status firewalld ,即可查看防火墙状态 防火墙的开启、关闭、禁用命令 (1)设置开机启用防火墙:systemctl enable firewalld.service (2)设置开机禁用防火墙:system…...

[论文阅读] 人工智能 | 大语言模型计划生成的新范式:基于过程挖掘的技能学习

#论文阅读# 大语言模型计划生成的新范式:基于过程挖掘的技能学习 论文信息 Skill Learning Using Process Mining for Large Language Model Plan Generation Andrei Cosmin Redis, Mohammadreza Fani Sani, Bahram Zarrin, Andrea Burattin Cite as: arXiv:2410.…...

MS31912TEA 多通道半桥驱动器 氛围灯 照明灯 示宽灯 转向灯驱动 后视镜方向调节 可替代DRV8912

MS31912TEA 多通道半桥驱动器 氛围灯 照明灯 示宽灯 转向灯驱动 后视镜方向调节 可替代DRV8912 产品简述 MS31912 是集成多种高级诊断功能的多通道半桥驱动。 MS31912 具有 12 个半桥,典型工作电压 13.5V 下,每一个半桥支持 1A 电流,典型工…...

软考 系统架构设计师系列知识点之杂项集萃(84)

接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(83) 第151题 在软件系统工具中,版本控制工具属于(),软件评价工具属于()。 第1空 A. 软件开发工具 B. 软件维…...

矩阵QR分解

1 orthonormal 向量与 Orthogonal 矩阵 orthonormal 向量定义为 ,任意向量 相互垂直,且模长为1; 如果将 orthonormal 向量按列组织成矩阵,矩阵为 Orthogonal 矩阵,满足如下性质: ; 当为方阵时&…...

UDP与TCP的区别是什么?

UDP和TCP是互联网通信中最常用的两种传输层协议,它们在数据传输方式、可靠性、速度和适用场景等方面存在显著差异。本文将围绕UDP与TCP的核心区别展开详细分析,包括连接方式、数据传输机制、传输效率以及各自适合的应用场景,帮助开发者和网络…...

撰写脚本,通过发布/joint_states话题改变机器人在Rviz中的关节角度

撰写脚本,通过发布/joint_states话题改变机器人在Rviz中的关节角度 提问 为我写一个改变关节base_spherical_center_high_joint角度的python脚本吧。适用于ROS2的humble 回答 下面是一个适用于 ROS 2 Humble 的 Python 脚本,它会以指定频率持续发布 …...

AOP实现Restful接口操作日志入表方案

文章目录 前言一、基础资源配置1.操作日志基本表[base_operation_log] 见附录1。2.操作日志扩展表[base_operation_log_ext] 见附录2。3.定义接口操作系统日志DTO:OptLogDTO4.定义操作日志注解类WebLog5.定义操作日志Aspect切面类SysLogAspect6.定义异步监听日志事件…...

【MATLAB去噪算法】基于CEEMDAN联合小波阈值去噪算法(第四期)

CEEMDAN联合小波阈值去噪算法相关文献 一、EMD 与 EEMD 的局限性 (1)EMD (经验模态分解) 旨在自适应地将非线性、非平稳信号分解成一系列 本征模态函数 (IMFs),这些 IMFs 从高频到低频排列。 核心问题:模态混合 (Mode Mixing) 同…...

Webhook 配置备忘

本文地址:blog.lucien.ink/archives/552 将下列代码保存为 install.sh,然后 bash install.sh。 #!/usr/bin/env bash set -e wget https://github.mirrors.lucien.ink/https://github.com/adnanh/webhook/releases/download/2.8.2/webhook-linux-amd64.…...

从理论崩塌到新路径:捷克科学院APL Photonics论文重构涡旋光技术边界

理论预言 vs 实验挑战 光子轨道角动量(Orbital Angular Momentum, OAM)作为光场调控的新维度,曾被理论预言可突破传统拉曼散射的对称性限制——尤其是通过涡旋光(如拉盖尔高斯光束)激发晶体中常规手段无法探测的"…...

机器学习笔记【Week7】

一、SVM的动机:大间隔分类器 1、逻辑回归回顾 假设函数为 sigmoid 函数: h θ ( x ) 1 1 e − θ T x h_\theta(x) \frac{1}{1 e^{-\theta^Tx}} hθ​(x)1e−θTx1​ 分类依据是 h θ ( x ) ≥ 0.5 h_\theta(x) \geq 0.5 hθ​(x)≥0.5 为正类&a…...

LSM Tree算法原理

LSM Tree(Log-Structured Merge Tree)是一种针对写密集型场景优化的数据结构,广泛应用于LevelDB、RocksDB等数据库引擎中。其核心原理如下: ‌1. 写入优化:顺序写代替随机写‌ ‌内存缓冲(MemTable)‌:写入操作首先被写入内存中的数据结构(如跳表或平衡树),…...

智能推荐系统:协同过滤与深度学习结合

智能推荐系统:协同过滤与深度学习结合 系统化学习人工智能网站(收藏):https://www.captainbed.cn/flu 文章目录 智能推荐系统:协同过滤与深度学习结合摘要引言技术原理对比1. 协同过滤算法:基于相似性的推…...

文档处理组件Aspose.Words 25.5全新发布 :六大新功能与性能深度优化

在数字化办公日益普及的今天,文档处理的效率与质量直接影响到企业的运营效率。Aspose.Words 作为业界领先的文档处理控件,其最新发布的 25.5 版本带来了六大新功能和多项性能优化,旨在为开发者和企业用户提供更强大、高效的文档处理能力。 六…...

固态继电器与驱动隔离器:电力系统的守护者

在电力系统中, 固态继电器合驱动隔离器像两位“电力守护神”,默默地确保电力设备的安全与稳定运行。它们通过高效、可靠的性能,保障了电力设备在各种环境下的正常工作。 固态继电器是电力控制中的关键组成部分,利用半导体器件来实…...

uni-app 如何实现选择和上传非图像、视频文件?

在 uni-app 中实现选择和上传非图像、视频文件,可根据不同端(App、H5、小程序)的特点,采用以下方法: 一、通用思路(多端适配优先推荐) 借助 uni.chooseFile 选择文件,再用 uni.upl…...

区块链架构深度解析:从 Genesis Block 到 Layer 2

# 区块链架构深度解析:从 Genesis Block 到 Layer 2 目录 一、Genesis Block:区块链的起点 二、Layer 0:区块链的底层网络架构 三、Layer 1:核心协议层 🚀 四、Layer 2:扩展性解决方案 五、未来展望&a…...

【数据分析】基于adonis2与pairwise.adonis2的群组差异分析教程

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理adonis分析pairwise.adonis2分析总结系统信息介绍 本教程主要用于执行和分析基于距离矩阵的多样性和群落结构分析,特别是通过adonis2和pairwi…...

使用pdm+uv替换poetry

用了好几年poetry了,各方面都还挺满意,就是lock实在太慢; 已经试用pdmuv一段时间了,确实是快,也基本能覆盖poetry的功能。 至于为什么用pdmuv,而不是只用uv,原因很多,有兴趣的可以…...

Nginx + Tomcat负载均衡群集

目录 一、案例环境 二、部署 Tomcat(102/103) 1、准备环境 (1)关闭firewalld 防火墙 (2)安装JDK 2、安装配置 Tomcat (1)Tomcat 的安装和配置 (2)移动…...

嵌入式开发之STM32学习笔记day22

STM32F103C8T6 FLASH闪存 1 FLASH简介 STM32F1系列微控制器的FLASH存储器是一种非易失性存储器,它在微控制器中扮演着至关重要的角色。以下是对STM32F1系列FLASH存储器及其相关编程方式的扩展说明: 【FLASH存储器的组成部分】 程序存储器:这…...

分词算法BBPE详解和Qwen的应用

一、TL;DR BPE有什么问题:依旧会遇到OOV问题,并且中文、日文这些大词汇表模型容易出现训练中未出现过的字符Byte-level BPE怎么解决:与BPE一样是高频字节进行合并,但BBPE是以UTF-8编码UTF-8编码字节序列而非字符序列B…...

关于ETL的BackgroundScheduler同步方案和misfire_grace_time

如果做ETL避免脏数据,那么不可以允许同一个job有并行允许的情况,也就是说max_instance参数始终设置成1。 这时候执行ETL任务,会有以下情况。 1 任务不超时。正常执行 2 任务超时。如果下一个时间点上一次任务还没有执行完,那么…...

多线程下使用缓存+锁Lock, 出现“锁失效” + “缓存未命中竞争”的缓存击穿情况,双重检查缓存解决问题

多线程情况下,想通过缓存同步锁的机制去避免多次重复处理逻辑,尤其是I/0操作,但是在实际的操作过程中发现多次访问的日志 2025-06-05 17:30:27.683 [ForkJoinPool.commonPool-worker-3] INFO Rule - [vagueNameMilvusReacll,285] - embeddin…...

Playwright 测试框架 - .NET

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】...

命令行以TLS/SSL显式加密方式访问FTP服务器

昨天留了一个小尾巴~~就是在命令行或者代码调用命令,以TLS/SSL显式加密方式,访问FTP服务器,上传和下载文件。 有小伙伴可能说ftp命令不可以吗?不可以哦~~ ftp 命令本身不支持显式加密。要实现 FTP 的显式加密,可以使…...

Mac 双系统

准备——Windows10 ISO文件下载 下载地址:https://msdn.itellyou.cn 操作系统 Win10-1903镜像 复制链接迅雷下载 第一步——查看系统磁盘剩余空间 打开“启动台”找到“其他”文件夹,打开“磁盘工具”(剩余空间要大于40GB) 第二…...

Linux配置yum 时间同步服务 关闭防火墙 关闭ESlinux

1、配置yum 1.1、Could not resolve host: mirrorlist.centos.org; 未知的错误 https://blog.csdn.net/fansfi/article/details/146369946?fromshareblogdetail&sharetypeblogdetail&sharerId146369946&sharereferPC&sharesourceRockandrollman&sharefr…...