记录一次部署踩坑: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 图形界面依赖。

相关推荐
寻梦csdn2 天前
pycharm+miniconda兼容问题
ide·python·pycharm·conda
hampeter2 天前
【填坑指南】Trae/VS Code 远程连接 Ubuntu,终端总是自动激活特定的 Conda 环境?三招教你彻底解决!
linux·ubuntu·conda·trae
403240732 天前
【Jetson开发避坑】虚拟环境(Conda/Venv)调用系统底层OpenCV与TensorRT的终极指南
人工智能·opencv·conda
qinyia3 天前
如何彻底卸载macOS上的conda并清理环境变量配置
macos·conda
weixin_421585014 天前
Mamba与Conda
conda
qq_273900234 天前
Apptainer 将 Ubuntu 本地 Conda 环境打包为 Singularity(SIF)镜像
linux·ubuntu·conda
肆意飞扬5 天前
Python篇:使用conda、pip的一些命令记录
python·conda·pip
没事儿写两篇7 天前
Anaconda 的开源替代软件 Miniforge
开源·conda·miniconda·miniforge
次旅行的库7 天前
不能将windows本地虚拟环境打包到实验室服务器
linux·windows·conda
云和数据.ChenGuang9 天前
python对接mysql和模型类的故障
数据库·python·mysql·oracle·conda·virtualenv