适用环境:Ubuntu 22.04 LTS。本文只处理
apt/dpkg的软件包状态问题,不适用于磁盘损坏或系统无法启动的情形。
E: Sub-process /usr/bin/dpkg returned an error code (1) 不是一个单独的故障原因,而是安装流程最后给出的概括性结果。真正的线索通常出现在它之前:可能是某个包的配置脚本失败、依赖缺失、磁盘空间耗尽,或安装被中断。
先找到真正报错的包
先重新执行一次,并保留完整输出;重点看最后一个出现 error processing package 或 post-installation script 的包名。
| |
这三个命令依次更新软件包索引、修复可满足的依赖、继续完成尚未配置的包。大多数“错误代码 1”到这里就能恢复。
仍失败时的排查顺序
- 查看可用空间:
df -h;/或/var写满会导致配置脚本失败。 - 查看最近的包管理日志:
sudo tail -n 120 /var/log/dpkg.log。 - 用前面找到的包名重新安装:
sudo apt install --reinstall 包名。 - 只有确认该包可以移除且没有关键依赖时,才考虑
sudo apt remove 包名后再安装。
不要把删除 /var/lib/dpkg/info 当作常规修复方式。该目录保存已安装软件包的维护脚本与元数据;直接改动前必须有备份,并应先确认是元数据损坏而非某个具体包的配置错误。
修复后的确认
| |
若 dpkg --audit 没有输出未完成的软件包,说明包管理状态已恢复。对驱动、内核、引导加载器等重要组件,建议在重启前确认没有待处理的错误。
出处
- 原始参考:解决 apt-get 安装中的 dpkg error code (1)(焦距,博客园)
本文为基于原始参考重新编排的排障笔记;命令应以当前终端输出为准。