Ubuntu 中 dpkg 返回错误代码 1:从检查到修复

在 Ubuntu 22.04 LTS 中处理 apt 安装失败与 dpkg 错误代码 1 的安全排查顺序。

适用环境:Ubuntu 22.04 LTS。本文只处理 apt / dpkg 的软件包状态问题,不适用于磁盘损坏或系统无法启动的情形。

E: Sub-process /usr/bin/dpkg returned an error code (1) 不是一个单独的故障原因,而是安装流程最后给出的概括性结果。真正的线索通常出现在它之前:可能是某个包的配置脚本失败、依赖缺失、磁盘空间耗尽,或安装被中断。

先找到真正报错的包

先重新执行一次,并保留完整输出;重点看最后一个出现 error processing packagepost-installation script 的包名。

1
2
3
sudo apt update
sudo apt install -f
sudo dpkg --configure -a

这三个命令依次更新软件包索引、修复可满足的依赖、继续完成尚未配置的包。大多数“错误代码 1”到这里就能恢复。

仍失败时的排查顺序

  1. 查看可用空间:df -h//var 写满会导致配置脚本失败。
  2. 查看最近的包管理日志:sudo tail -n 120 /var/log/dpkg.log
  3. 用前面找到的包名重新安装:sudo apt install --reinstall 包名
  4. 只有确认该包可以移除且没有关键依赖时,才考虑 sudo apt remove 包名 后再安装。

不要把删除 /var/lib/dpkg/info 当作常规修复方式。该目录保存已安装软件包的维护脚本与元数据;直接改动前必须有备份,并应先确认是元数据损坏而非某个具体包的配置错误。

修复后的确认

1
2
3
sudo apt -f install
sudo dpkg --audit
sudo apt upgrade

dpkg --audit 没有输出未完成的软件包,说明包管理状态已恢复。对驱动、内核、引导加载器等重要组件,建议在重启前确认没有待处理的错误。

出处

本文为基于原始参考重新编排的排障笔记;命令应以当前终端输出为准。