原因
在更新Ubuntu系统时,由于使用远程桌面进行更新,意外导致do-release-upgrade
过程终端。在修复过程中多次apt update
rm -rf /var/lib/dpkg/info/软件
dpkg --remove --force-remove-reinstreq 软件
dpkg --purge --force-remove-reinstreq 软件
apt remove
apt autoremove
apt dist-upgrade
等破坏性操作操作,导致最终系统中误删systemd-resolve
这个用于解析DNS的软件,从而使系统DNS失效.
表现为仅能通过IP地址访问互联网。此时系统处于半断网状态。
排查
ping 114.114.114.114 # 能够正常访问
ping qq.com # 显示域名解析暂时错误
sudo systemctl restart systemd-resolved
# 显示 Failed to restart systemd-resolved.service: Unit systemd-resolved.service not found
解决方法
- 前往Ubuntu软件包官网,手动下载systemd-resolved软件包的deb文件
systemd-resolved_255.4-1ubuntu8_amd64.deb
。并通过U盘或本地SSH拷贝到系统中。 - 用dpkg手动安装软件包
sudo dpkg -i systemd-resolved_255.4-1ubuntu8_amd64.deb
补充说明
- 该问题出现在系统更新中途被意外终止的情况,其损坏情况因人而异,修复方法也不同,关键在于了解Linux的整体网络堆栈结构来评估破坏情况,进行针对性修复。
- 运气好的情况下,损坏的网络堆栈软件包可能只有一个,但更有可能是多个软件包损坏,需要根据提示调整安装的软件