目录

CentOS 7 安装 LibreOffice 报错解决:缺少 libcairo.so.2 等共享库依赖完整修复指南

背景说明

在服务器端将 Word、PPT、Excel 等 Office 文档批量转换为 PDF,是很多业务系统的常见需求。LibreOffice 作为一款开源的办公套件,支持在 Linux 命令行下以 headless 模式进行文档格式转换,是目前最主流的服务端方案之一。

然而在 CentOS 7 上安装 LibreOffice 后,首次运行时经常会遇到各种 共享库缺失(shared libraries missing) 的报错,导致程序无法正常启动。这篇文章完整记录了我在实际部署过程中遇到的依赖问题以及逐步排查修复的方法,希望能帮到遇到同样困扰的朋友。

环境信息

项目 版本
操作系统 CentOS 7.x
LibreOffice 6.2(安装路径 /opt/libreoffice6.2/
安装方式 RPM 包手动安装

问题现象

LibreOffice 安装完成后,执行以下命令测试是否能正常运行:

libreoffice6.2 --help

终端直接输出了报错信息,程序无法启动。下面按照实际遇到的顺序,逐个解决这些依赖缺失的问题。

报错一:缺少 libcairo.so.2

运行后终端提示如下错误:

/opt/libreoffice6.2/program/soffice.bin: error while loading shared libraries: libcairo.so.2: cannot open shared object file: No such file or directory

这条报错说明系统中缺少 libcairo.so.2 这个动态链接库。cairo 是一个 2D 图形渲染库,LibreOffice 的界面渲染和文档绘制都依赖它。

第一步:安装 cairo 库

yum install cairo

安装完成后,再次运行测试命令:

libreoffice6.2 --help

如果仍然报错,继续下一步。

第二步:安装 cups-libs 库

yum install cups-libs

cups-libs 是 CUPS 打印系统的客户端库,LibreOffice 即使在 headless 模式下也需要它来处理打印相关的逻辑。安装后再次测试:

libreoffice6.2 --help

如果还有报错,继续往下走。

第三步:安装 libSM 库

yum install libSM

libSM 是 X Window 会话管理协议库,属于 X11 的基础组件之一。安装完成后再次验证:

libreoffice6.2 --help

报错二:依然提示 libcairo.so.2 缺失

如果在完成上面的步骤后,运行时仍然出现类似的共享库错误,很可能是 ibus(智能输入法框架)相关的依赖没有安装。执行以下命令补齐:

yum install ibus

ibus 是 Linux 下常用的输入法框架,LibreOffice 在初始化过程中会尝试加载输入法相关的模块,如果缺失可能导致间接的库依赖报错。

一次性安装所有依赖(推荐)

如果你不想逐个排查,可以直接一条命令把上面提到的依赖全部装上:

yum install -y cairo cups-libs libSM ibus

这样能省去反复测试的麻烦,一步到位解决所有共享库缺失的问题。

安装完成后的验证

所有依赖安装完成后,执行以下命令确认 LibreOffice 是否能正常工作:

# 查看帮助信息,确认程序能正常启动
libreoffice6.2 --help

# 测试文档转换功能(以 Word 转 PDF 为例)
libreoffice6.2 --headless --convert-to pdf --outdir /tmp /path/to/test.docx

如果 --help 能正常输出帮助文档,并且文档转换也能顺利生成 PDF 文件,说明 LibreOffice 已经可以正常使用了。

常见问题

Q1:安装依赖时提示 “No package xxx available” 怎么办?

这通常是因为 yum 源没有配置好。可以先检查 EPEL 源是否已启用:

yum install -y epel-release
yum clean all
yum makecache

然后重新安装对应的依赖包。

Q2:依赖都装了还是报错 libcairo.so.2 找不到?

可以用 ldd 命令查看 LibreOffice 二进制文件到底缺哪些库:

ldd /opt/libreoffice6.2/program/soffice.bin | grep "not found"

根据输出的 “not found” 列表,逐个安装对应的包。也可以用 yum provides 命令反查某个 .so 文件属于哪个 RPM 包:

yum provides libcairo.so.2

Q3:LibreOffice headless 模式转换 PDF 时中文乱码怎么处理?

这是因为服务器缺少中文字体。需要安装中文字体包:

yum install -y wqy-microhei-fonts wqy-zenhei-fonts

或者将 Windows 系统下的字体文件(如 simsun.ttcmsyh.ttf 等)手动拷贝到 /usr/share/fonts/ 目录下,然后刷新字体缓存:

fc-cache -fv

Q4:CentOS 7 能装更高版本的 LibreOffice 吗?

可以,但需要注意 CentOS 7 的 glibc 版本较低(2.17),LibreOffice 7.x 以上版本可能需要更高版本的 glibc。如果你的业务场景对版本没有特殊要求,建议在 CentOS 7 上使用 LibreOffice 6.x 系列会更稳定。

Q5:能用 Docker 来部署 LibreOffice 吗?

完全可以,而且这是目前比较推荐的做法。使用 Docker 可以避免各种系统级依赖冲突的问题,也方便在不同服务器之间迁移部署。网上有不少现成的 LibreOffice Docker 镜像可以直接使用。

总结

CentOS 7 安装 LibreOffice 后遇到共享库缺失是非常常见的问题,核心原因是 CentOS 7 的最小化安装默认不包含图形相关的依赖库。本文涉及的几个关键依赖包总结如下:

依赖包 作用说明
cairo 2D 图形渲染库,LibreOffice 核心依赖
cups-libs CUPS 打印系统客户端库
libSM X Window 会话管理协议库
ibus 输入法框架,间接影响库加载

遇到 error while loading shared libraries 这类报错时不要慌,按照 先用 ldd 查缺失 → 再用 yum provides 查包名 → 最后 yum install 安装 的排查思路,基本都能顺利解决。

如果你在 CentOS 7 安装 LibreOffice 的过程中还遇到了其他问题,欢迎在评论区留言交流,大家一起讨论解决~~~

版权声明

未经授权,禁止转载本文章。
如需转载请保留原文链接并注明出处。即视为默认获得授权。
未保留原文链接未注明出处或删除链接将视为侵权,必追究法律责任!

本文原文链接: https://fiveyoboy.com/articles/centos7-install-libreoffice-missing-shared-libraries-fix/

备用原文链接: https://blog.fiveyoboy.com/articles/centos7-install-libreoffice-missing-shared-libraries-fix/