记录一次部署踩坑:Conda 环境导致 yum 报错与 LibreOffice 安装指南

目录

[记录一次部署踩坑:Conda 环境导致 yum 报错与 LibreOffice 安装指南](#记录一次部署踩坑:Conda 环境导致 yum 报错与 LibreOffice 安装指南)

[1. 问题现场](#1. 问题现场)

[2. 原因分析](#2. 原因分析)

[3. 解决方案](#3. 解决方案)

[第一步:退出 Conda 虚拟环境](#第一步:退出 Conda 虚拟环境)

[第二步:安装 LibreOffice-Headless](#第二步:安装 LibreOffice-Headless)

第三步:验证安装

[4. 总结](#4. 总结)


记录一次部署踩坑:Conda 环境导致 yum 报错与 LibreOffice 安装指南

在服务器端部署应用(如 Open WebUI)时,经常需要安装一些系统级的依赖。最近在配置文档解析功能(RAG)时,需要安装 LibreOffice,却意外遇到了 Python 环境冲突导致 yum 崩溃的问题。

本文记录了错误的排查过程及最终的解决方案,希望能帮到遇到类似问题的朋友。

1. 问题现场

环境: Alibaba Cloud Linux / CentOS

场景: 正在 (openwebui) 的 Conda 虚拟环境中,尝试通过 yum 安装 LibreOffice。

执行命令:

Bash

复制代码
(openwebui) [root@server backend]# yum install -y libreoffice

报错信息:

系统抛出了 OpenSSL 相关的 Python 错误,并提示 spacewalk 插件加载失败:

Plaintext

复制代码
/usr/lib/python3.6/site-packages/OpenSSL/crypto.py:12: CryptographyDeprecationWarning: Python 3.6 is no longer supported...
  from cryptography import x509

Failed loading plugin "spacewalk": module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'
Last metadata expiration check: ...
No match for argument: libreoffice
Error: Unable to find a match: libreoffice

随后,yum 无法找到软件包并退出。

2. 原因分析

这个报错看似是 OpenSSL 的问题,实则是 Python 环境隔离不当 引起的系统工具冲突。

  1. Yum 是基于 Python 的工具: 在 CentOS/RHEL 系统中,yumdnf 底层依赖于系统自带的 Python 环境(通常是 Python 3.6 或 2.7)以及系统级的 OpenSSL 库。

  2. Conda 环境劫持: 当我们激活了 (openwebui) 虚拟环境时,环境变量 PATHPYTHONPATH 被修改。

  3. 依赖版本冲突: yum 运行时,错误地加载了 Conda 环境中较新版本的 cryptographypyOpenSSL 库,而这些库与系统底层的 yum 并不兼容(缺少了 X509_V_FLAG_CB_ISSUER_CHECK 属性),从而导致崩溃。

此外,报错 No match for argument: libreoffice 是因为在某些服务器发行版的默认源中,不包含完整的 GUI 版 LibreOffice,或者元数据缓存因崩溃未能正确刷新。

3. 解决方案

解决的核心思路是:将系统运维操作与业务代码环境分开

第一步:退出 Conda 虚拟环境

在执行系统级安装命令前,必须先退出当前的 Python 虚拟环境,确保 yum 使用原生的系统 Python 库。

Bash

复制代码
# 退出当前环境
conda deactivate

此时,命令行提示符应从 (openwebui) [root@...] 变为 [root@...]

第二步:安装 LibreOffice-Headless

在服务器环境下,我们通常不需要图形界面(GUI),只需要 LibreOffice 的核心转换功能(用于将 .doc/.xlsx 转为 PDF 或文本)。因此,安装 libreoffice-headless 是更优的选择,体积小且依赖少。

执行安装:

Bash

复制代码
yum install libreoffice-headless -y

(如果提示找不到包,可能需要先安装 EPEL 源:yum install epel-release)

第三步:验证安装

安装完成后,验证是否可用:

Bash

复制代码
libreoffice --headless --version

输出类似 LibreOffice 7.x.x.x 即表示安装成功。

4. 总结

在 Linux 服务器上进行运维操作时,请牢记以下原则:

  1. 各司其职: 使用 pip/conda 管理项目依赖,使用 yum/apt 管理系统软件。

  2. 避免混用: 尽量不要在激活的 Conda/Virtualenv 环境中使用 yumapt,这极易引发 OpenSSL 或 GLIBC 等底层库的冲突。

  3. 按需安装: 服务器端处理文档,优先选择 headless 版本软件,避免引入庞大的 X11 图形界面依赖。

相关推荐
烟锁池塘柳09 天前
Conda 创建环境报错:Unable to read repodata JSON file,清华源 pkgs/free 失效解决方法
json·conda
veminhe9 天前
conda使用
python·conda
方与圆之帆13 天前
conda 管理不同版本的软件包
conda·gdal·osm
数智工坊15 天前
Conda 环境 Docker 标准化迁移完整方案,适配深度学习 GPU 训练
深度学习·docker·conda
软糖姐姐17 天前
Python开篇——简介、pip和conda
python·conda·pip·数据科学·
puamac17 天前
Conda + CUDA 环境安装与使用完全指南
conda
叶 落18 天前
Mac 通过 Miniconda 安装 Python
python·macos·conda·miniconda
冰心孤城18 天前
Conda、Anaconda、Miniconda对比分析
conda
不明觉厉二十年18 天前
uv Windows配置
conda·pip
心念枕惊20 天前
Conda 环境一键搬家:用 conda-pack 打包带走,连网都不用
conda·neo4j