Debian 12 (bookworm) apt 安装 LibreOffice 依赖冲突排错全记录

Debian 12 (bookworm) apt 安装 LibreOffice 依赖冲突排错全记录

在 Debian 12 (bookworm) 上执行 apt install libreoffice 时,遇到 coinor-libcoinutils3v5 依赖 liblapack3 无法安装,以及 gcc-12-base 版本冲突导致 apt 依赖解析卡死。本文记录完整排错与解决过程,包含全部诊断命令与修复步骤,无需重装系统即可恢复。

📑 目录

1. 问题现象

执行 apt install libreoffice 时,apt 报出未满足的依赖关系:

下列软件包有未满足的依赖关系:
 coinor-libcoinutils3v5 : 依赖: liblapack3 但无法安装它 或
                                 liblapack.so.3
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

随后执行 apt full-upgrade 又出现第二个冲突:

util-linux : 破坏: bsdutils (< 1:2.41.1-4~) 但是 1:2.38.1-5+deb12u3 正要被安装
E: 错误,pkgProblemResolver::Resolve 发生故障,这可能是有软件包被要求保持现状的缘故。

两个问题相互缠绕,导致 apt 彻底无法自动修复。

2. 排查命令与诊断

在修复前,先用以下命令定位问题来源:

2.1 查看被锁定(hold)的软件包

apt-mark showhold

若输出为空,说明没有手动锁定包,冲突来自依赖解析本身。

2.2 更新软件源并尝试自动修复

apt update
apt --fix-broken install

2.3 查询冲突包在 apt 缓存中的状态

apt-cache policy coinor-libcoinutils3v5

预期关键输出:

coinor-libcoinutils3v5:
  已安装:(无)
  候选: 2.11.4+repack1-2
  版本列表:
     2.11.4+repack1-2 500
        500 http://deb.debian.org/debian bookworm/main amd64 Packages

2.4 查看反向依赖(谁在依赖这个包)

apt-cache rdepends coinor-libcoinutils3v5

2.5 检查 dpkg 数据库中是否有残留

dpkg -l | grep -i coinor
dpkg -s coinor-libcoinutils3v5 2>/dev/null | grep -E 'Status|Package'
grep -i coinor /var/lib/dpkg/status
ls /var/lib/dpkg/info/ | grep -i coinor

若以上命令均无输出,说明 dpkg 中未安装该包,是 apt 元数据或依赖链中的“幽灵”冲突。

2.6 检查第三方源与 pinning 配置

grep -r coinor /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null
grep -r coinor /etc/apt/preferences.d/ 2>/dev/null

2.8 审计 dpkg 数据库完整性

dpkg --audit

2.9 查看关键包当前版本

dpkg -l | grep gcc-12-base
dpkg -l | grep bsdutils
dpkg -l | grep util-linux

3. 根因分析

  • coinor-libcoinutils3v5 依赖链断裂:该包依赖 liblapack3,而 bookworm 官方源中 liblapack3 无法正常安装,导致整个依赖链锁死。
  • gcc-12-base 版本锁死:libgfortran5 要求 gcc-12-base 特定版本(12.2.0-14+deb12u1),但系统中已安装较新版本(12.5.0-9),apt 拒绝降级,进而阻止 liblapack3 安装。
  • util-linux / bsdutils 冲突:util-linux 要求升级 bsdutils,但系统中 bsdutils 被锁在旧版,导致 full-upgrade 失败。
注意:dpkg 数据库中并未实际安装 coinor-libcoinutils3v5,apt 只是在尝试安装 LibreOffice 时通过依赖关系发现了这个“幽灵”冲突。

4. 解决步骤

4.1 降级 gcc-12-base

先查看当前版本,再强制指定版本降级:

dpkg -l | grep gcc-12-base
apt install gcc-12-base=12.2.0-14+deb12u1

4.2 安装缺失的 liblapack3

降级后,liblapack3 及其依赖 libblas3、libgfortran5 即可正常安装:

apt install liblapack3

4.3 安装 LibreOffice

依赖链打通后,直接安装即可:

apt install libreoffice

安装过程会拉取约 422 MB 的归档,解压后占用约 1.5 GB 空间,请根据网络和磁盘情况等待完成。

提示:安装过程中可能出现 debconf: 无法初始化前端界面:Dialog 警告,这是缺少 Dialog 程序导致的界面降级提示,不影响安装,可忽略。

5. 验证安装

安装完成后,检查版本号:

libreoffice --version

预期输出类似:

LibreOffice 7.4.7.2 40(Build:2)

启动常用模块:

libreoffice --writer   # 文字
libreoffice --calc     # 表格
libreoffice --impress  # 演示文稿

6. 安装简体中文语言包

如需中文界面,安装对应语言包:

apt install libreoffice-l10n-zh-cn

使用中文界面启动(需系统已生成 zh_CN.UTF-8 locale):

LANG=zh_CN.UTF-8 libreoffice --writer

7. 注意事项与兜底方案

  • 不要重装系统:apt 依赖冲突通常只是少数包版本锁死,系统核心文件完好,无需重装。
  • 不要卸载 util-linux:它是核心系统包,卸载可能导致系统无法引导。
  • 如 apt 仍无法安装:可下载 LibreOffice 官方 tar.gz 静态包,解压后直接运行 ./opt/libreoffice/program/soffice,完全绕过 apt 依赖。
  • 如需更智能的依赖解析:可安装 aptitude,其依赖解析比 apt 更智能,会列出多个可选方案供选择。
小结 / 五步快速修复
  1. 降级 gcc-12-base 到 12.2.0-14+deb12u1
  2. 安装 liblapack3(自动带上 libblas3、libgfortran5)
  3. 执行 apt install libreoffice
  4. (可选)安装 libreoffice-l10n-zh-cn 中文语言包
  5. 执行 libreoffice --version 验证

发布者

ChiuYut

咦? 我是谁? 这是什么地方? Ya ha! 我是ChiuYut! 这里是我的小破站!