CentOS 下 LibreOffice 常见问题与排查
一 安装与依赖问题
- 推荐安装方式:从官方下载 RPM 包(x86_64),解压后进入解压目录的 RPMS 子目录,执行本地安装(如:yum localinstall *.rpm),如需中文界面再安装对应的 langpack_zh-CN 包。安装完成后可用命令行验证:/opt/libreofficeX.Y/program/soffice --version。
- 常见缺失依赖与修复示例:
- 图形/显示相关:sudo yum install -y libSM libICE libX11-xcb libXext libXinerama
- 打印/字体渲染:sudo yum install -y cups-libs fontconfig
- 无界面转换测试:/opt/libreofficeX.Y/program/soffice --headless --invisible --convert-to pdf:writer_pdf_Export /path/file.docx --outdir /path/out
- 注意:若系统目录包含中文路径,LibreOffice/转换服务可能异常或卡死,建议将文档与程序目录放在纯英文路径下。
二 字体与中文显示问题
- 现象:导出 PDF 或屏幕显示出现中文方块/乱码。
- 处理步骤:
- 将 Windows 字体(如 msyh.ttf、msyhbd.ttf、simsun.ttc、simkai.ttf、simhei.ttf、simfang.ttf)复制到 /usr/share/fonts/chinese;
- 赋权并重建字体缓存:
- chmod -R 755 /usr/share/fonts/chinese
- fc-list | grep chinese(确认已识别)
- 说明:多数中文乱码由系统缺少中文字体引起,安装常用中文字体后通常可解决。
三 命令行转换与服务化常见报错
- 命令格式示例:/opt/libreofficeX.Y/program/soffice --headless --invisible --convert-to pdf:writer_pdf_Export input.docx --outdir out
- 长时间无响应或 CPU 100%:优先检查是否使用了中文路径或包含非常规字符的路径,改为英文路径后重试。
- “acceptString … started but its pid could not be found”:常见于工作目录含中文、权限不足或并发启动冲突;确保工作目录为英文路径、清理残留进程后再启动。
- 服务方式启动与端口占用:
- 启动:/opt/libreofficeX.Y/program/soffice --headless --accept=“socket,host=127.0.0.1,port=8100;urp;” --nofirststartwizard &
- 检查端口:netstat -nalp | grep 8100
- 注意端口冲突与防火墙策略。
四 版本兼容性与系统库限制
- 老系统(如 CentOS 6)运行新版本 LibreOffice 可能出现:
- /lib64/libc.so.6: version `GLIBC_2.14’ not found(glibc 版本过低)
- /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18’ not found(libstdc++ 符号版本不足)
- 处理思路:升级 glibc 与 gcc/libstdc++,或改用与系统库匹配的 旧版 LibreOffice(不建议在生产环境直接替换系统库,风险较高)。
- 生命周期提示:CentOS 7 已于 2024-06-30 停止维护,若长期遇到依赖与兼容性问题,建议迁移到仍受支持的 RHEL/SLES 或更新版本发行版。
五 快速排查清单
- 核对版本:/opt/libreofficeX.Y/program/soffice --version
- 检查依赖:ldd /opt/libreofficeX.Y/program/soffice.bin | grep “not found”
- 验证字体:fc-list :lang=zh
- 无界面转换测试:–headless --convert-to pdf 小文件验证
- 工作目录与权限:确保为英文路径、目录可写、无并发锁定
- 查看日志:journalctl -xe 或运行命令时重定向 stderr 便于定位