2025-10-16 · Engineering Notes

Linux 服务器 dpkg 报错问题解决

这是一篇从旧博客迁移来的工程笔记,记录 Ubuntu 系统中 openssh-server 的 post-installation 脚本异常,导致 apt 和 dpkg 操作返回非零退出码的问题。

问题背景

执行 sudo apt installsudo dpkg --configure -a 等命令时,系统在配置 openssh-server 阶段报错。SSH 服务本身处于正常运行状态,但安装脚本调用 invoke-rc.d 时返回失败,导致 dpkg 认为软件包配置失败。

Setting up openssh-server ...
invoke-rc.d: initscript ssh, action "restart" failed.
dpkg: 处理软件包 openssh-server (--configure)时出错

排查思路

首先通过 systemctl status ssh 确认 SSH 服务实际正常。随后检查 /var/lib/dpkg/info/openssh-server.postinst,定位到脚本末尾调用 invoke-rc.d ssh $_dh_action 的位置。

临时修复

在确认 SSH 服务正常、问题集中在安装脚本返回码后,可以在对应调用后追加 || true,避免 dpkg 因该步骤的非零退出码中断。

invoke-rc.d ssh $_dh_action || true
sudo dpkg --configure -a
sudo apt install -f

这类修复适合作为服务器维护时的排障记录。实际操作前仍应根据当前系统状态确认服务和脚本内容。