目录
[记录一次部署踩坑: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 环境隔离不当 引起的系统工具冲突。
-
Yum 是基于 Python 的工具: 在 CentOS/RHEL 系统中,
yum和dnf底层依赖于系统自带的 Python 环境(通常是 Python 3.6 或 2.7)以及系统级的OpenSSL库。 -
Conda 环境劫持: 当我们激活了
(openwebui)虚拟环境时,环境变量PATH和PYTHONPATH被修改。 -
依赖版本冲突:
yum运行时,错误地加载了 Conda 环境中较新版本的cryptography或pyOpenSSL库,而这些库与系统底层的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 服务器上进行运维操作时,请牢记以下原则:
-
各司其职: 使用
pip/conda管理项目依赖,使用yum/apt管理系统软件。 -
避免混用: 尽量不要在激活的 Conda/Virtualenv 环境中使用
yum或apt,这极易引发 OpenSSL 或 GLIBC 等底层库的冲突。 -
按需安装: 服务器端处理文档,优先选择
headless版本软件,避免引入庞大的 X11 图形界面依赖。
