我运行了正确的 dnf update 命令,但在清理过程中我被注销了,并且我的一些进程重新启动了。重新启动时没有安装任何新程序,包括新内核。现在 dnf 无法识别丢失的更新包,它一直说系统是最新的,但事实并非如此。我甚至尝试了 dnf clean all 但没有任何效果,任何帮助都将不胜感激,因为我不想重新加载我的电脑,我只是在更新之前在侧注中加载了它,我编辑了 grub.cfg 以从我的内核参数中删除 nomodset,但我不知道这会如何影响它
答案1
您可以重新安装更新期间尝试安装的软件包。要获取软件包列表,请使用以下命令
sudo dnf history
这将按最近顺序提供交易列表,以及交易编号。使用最新交易编号,使用命令
sudo dnf history info NUMBER
获取该事务中涉及的软件包列表。更新可能不是最新的事务,因此请重复操作,直到找到正确的事务。
根据您的 shell 技能,下一部分可能有点乏味。您需要编制一个软件包列表,作为 dnf 的参数提供。如果列表很小,您可以复制并粘贴它们。如果列表很长,我建议将它们放在文本文件中。您可以用空格或换行符分隔软件包。
列表编译完成后你将使用的命令是
sudo dnf reinstall PKGLST
其中 PKGLST 是实际的软件包名称(复制并粘贴,每个 pkg 名称用空格分隔)或者如果它们在文件中,假设路径和文件名为 /home/purpe/pkg.lst 使用以下语法:
sudo dnf reinstall $(cat /home/purpe/pkg.lst)
这将强制重新安装所有这些,无论它们当前的状态如何。
如果遇到问题,请确保软件包列表准确无误 - 没有缺少空格、没有来自 dnf 历史记录的额外信息、没有拼写错误。经验告诉我,这几乎总是出错的地方。
如果您无法解决问题,请发布 dnf 输出和您尝试过的命令。使用 pastebin 之类的东西,因为 pkg 列表和 dnf 输出可能会很长