我在 CentOS 8 机器上运行了一个dnf update
,它卡住了,所以我在半小时左右后终止了该进程。现在似乎什么都不起作用了,甚至sudo
无法访问。我已经关闭了服务器的电源,但这些基本命令仍然不起作用。
再次运行dnf update
显示名称解析错误:
Errors during downloading metadata for repository 'AppStream':
— Curl error (6): Couldn't resolve host name for https://mirrorlist.centos.org/?release=8&arch=x86_64&repo=AppStream&infra=stock
[Could not resolve host: mirrorlist.centos.org: Unknown error]
Error: Failed to download metadata for repo 'AppStream':
Cannot prepare internal mirror list: Curl error (6): Couldn't resolve host
name for http://mirrorlist.centos.org/release=8&arch=x86_64&repo=AppStream&infra=stock
[Could not resolve host: mirrorlist.centos.org; Unknown error]
我现在应该怎么做?
答案1
所以是的,你的系统处于不一致的状态。将来,如果dnf
冻结,请尝试切换到另一个终端并查看系统日志。通过强制关机来中断它是总是这不是个好主意。在最坏的情况下,您可以发出一个kill
,然后再次尝试交易。
您可以尝试以下几种方法,但是请继续操作之前备份此系统。如果这些选项都不起作用,您的系统可能会比以前更崩溃。弄清楚到底是什么崩溃了,以及崩溃的原因更像是一门艺术,而不是科学,尤其是因为每次崩溃的情况都不一样。
这最快且最不容易出错您可以做的一件事是删除所有必要的数据并进行完全重新安装。请确定是否值得花时间来排除此故障。
成为 root。
获取此系统上所有重复包的列表。
dnf repoquery --quiet --duplicated --cacheonly --latest-limit 1 --qf "%{name}.%{arch}" > dupepackages.list
尝试删除所有重复的软件包。
dnf remove $(dnf repoquery --duplicated --cacheonly --latest-limit -1 -q)
以 root 身份运行。这将删除系统上除最新版本之外的所有软件包。您可能会在此处收到“受保护的软件包”错误,如果是这样,请使用 重新运行该命令--disableplugin=protected_packages
。这有点可怕。dnf
现在尝试重新安装重复项 - 这会将所有内容升级到中断之前尝试安装的较新版本。dnf reinstall -C $(cat dupepackages.list)
(我敢打赌你的 dnf 此时会开始正常运行)如果这有效的话,立即地重新运行导致整个混乱的升级。重复项消失后,
dnf
依赖性rpm
解析应该会启动并返回稳定状态。