WSL2 Ubuntu conda安装RapidsAI报repodata失败及依赖冲突
问题根因
- 硬版本限制:RapidsAI 22.06 官方要求系统glibc版本≥2.31,Ubuntu18.04默认glibc版本为2.27,直接不满足底层依赖要求;就算升级到Ubuntu20.04,如果未执行全量系统升级,残留的旧版libgcc关联文件也会触发nccl、cudatoolkit等底层包校验失败。
- 依赖冲突:将RapidsAI、pycaret、tensorflow、graphistry放在单条conda命令中安装时,各包维护的依赖版本范围无公共交集:RapidsAI 22.06绑定pyarrow≤8.0、pandas≤1.4.x、numpy<1.23,而同期pycaret、tensorflow要求的pyarrow≥9.0、pandas≥1.5、numpy≥1.23,conda默认求解器无法找到同时满足所有约束的版本组合,必然抛出UnsatisfiableError。
- 求解器性能问题:默认conda SAT求解器在依赖规模大、存在冲突时会直接超时,抛出
Solving environment: failed with repodata from current_repodata.json的假报错,和repodata源本身是否正常无关。 - 硬件限制:当前GPU显存仅4GB,RapidsAI全量组件最低显存要求为8GB,就算强制安装完成,运行时也会频繁触发显存溢出。
可复现的解决流程
- 重置WSL2环境清除旧配置残留
在Windows终端执行以下命令注销旧的WSL发行版,重新安装干净的Ubuntu20.04:
wsl --unregister Ubuntu-20.04 wsl --install -d Ubuntu-20.04
进入新安装的Ubuntu20.04系统后,执行全量系统升级,将glibc升级到符合要求的版本:
sudo apt update && sudo apt full-upgrade -y sudo apt install build-essential libglib2.0-0 -y # 验证glibc版本,确认输出版本≥2.31 ldd --version
- 配置conda环境替换默认求解器
安装最新版Miniconda后执行以下配置,解决求解卡顿、假repodata报错问题:
conda config --set channel_priority strict conda config --add channels conda-forge conda config --add channels nvidia conda config --add channels rapidsai # 安装libmamba求解器替换默认SAT求解器,求解速度提升10倍以上 conda install -n base conda-libmamba-solver -y conda config --set solver libmamba
- 分层安装依赖,避免全局版本冲突
不要在单条命令中安装所有包,按依赖优先级逐层安装,遇到版本冲突时单独指定兼容版本:
# 创建虚拟环境 conda create -n rapids python=3.9 -y conda activate rapids # 第一步安装Rapids最小化组件,适配4GB显存,指定cudatoolkit=11.5匹配22.06版本要求 conda install rapids=22.06 python=3.9 cudatoolkit=11.5 cudf cuml -y # 安装jupyterlab conda install jupyterlab -y # 安装剩余依赖,CPU版tensorflow可避免CUDA版本冲突,适配4GB显存硬件条件 pip install dash graphistry tensorflow-cpu pycaret==2.3.10
- 安装验证
进入Python交互环境执行以下代码,确认Rapids核心组件可正常导入:
import cudf import cuml print(cudf.__version__) # 正常输出22.06即为安装成功
注:4GB显存仅支持100万行以内小规模数据集的Rapids运算,大规模任务触发显存溢出属于硬件限制,无软件层面的解决方案。
之前尝试方案无效的原因
- 更换cudatoolkit版本、降级conda:未解决glibc版本硬限制、多包依赖版本无交集的核心问题,无法绕过冲突
- 升级Ubuntu20.04但未执行full-upgrade:系统残留的旧版libgcc文件会持续触发底层依赖校验失败
- 源码编译RapidsAI:编译过程同样会校验glibc版本,2.27版本下编译到nccl、libcudf阶段就会报错退出,和二进制安装的报错逻辑一致
内容的提问来源于stack exchange,提问作者abhipraja
相关产品推荐
相关产品推荐

