如何将损坏的Arch Linux恢复到以前的工作状态

时间:2020-03-21 11:46:51  来源:igfitidea点击:

我的Arch Linux无法启动到图形模式,并一直显示错误消息“多用户系统依赖性失败”和“图形界面依赖性失败”。
"dependency failed multi-user system" "dependency failed for graphical interface"

我唯一的选择是登录到单用户模式,然后尝试将更新的软件包回滚到以前的版本。

从单用户模式,我尝试了以下操作:

  • 我尝试从官方存储库安装软件包,但不能。因为在单用户模式下无法识别我的网卡,并且Internet无法正常工作。
  • “downgrade”命令也不起作用。

我不知道为什么。因此,我无法将任何软件包降级到其先前版本。它只是显示一条错误消息“未找到sudo pacman命令”。

  • 因此,再次尝试将所有软件包降级到特定日期。

它也没有帮助。我收到与上述“找不到sudo pacman命令”相同的错误。

后来,我决定降级所有以前一一更新的软件包。
因为“ pacman -Syu”命令更新了许多软件包,所以我无法确切确定是哪个软件包导致了问题。

如果我们处于类似情况,则本教程可能会重新获得可用的Arch Linux系统。

将破碎的Arch Linux恢复到以前的工作状态

首先,以单用户模式登录。
这样做,请在看到“ Grub”菜单时输入“ e”。

然后,找到以单词linux开头的行:

linux          /boot/vmlinuz-linux  root-UUID=d474f2-e6a2-4cc3-9899-aa98af13  rw  quiet

在上一行的末尾,键入以下行:

init=/bin/bash

请参阅以下屏幕截图,以供参考。

然后,按F10或者CTRL + X继续。
几秒钟后,我们将进入单用户模式。

键入以下命令以以读/写模式挂载根(/)文件系统。

mount -n -o remount,rw /

现在,我们需要查找何时进行完整的系统升级。
我们可以通过查看pacman.log文件轻松找到它。
此文件保存我们过去所做的所有pacman条目。

tail -n 200 /var/log/pacman.log | less

其中-n 200将显示pacman.log文件中的最后200行。
因为,我的pacman.log文件有很多条目。
如我们所知,tail命令将仅显示最后10个条目。
因此,将200替换为我们自己的数字即可浏览pacman.log文件。
然后,将“ tail”命令的输出通过管道传递到“ less”命令,以逐页显示结果。

浏览pacman.log文件后,我找到了完整系统升级的确切时间。
检查以下屏幕截图中的时间戳(对于低质量的图片,我们深表歉意)。
我已经在下午12:06运行“ sudo pacman -Syu”命令。

如我们所见,“ pacman -Syu”命令已更新了40多个软件包。
因为我不能使用“降级”命令将所有软件包降级到任何特定日期,所以我别无选择,只能使用高速缓存中的“ pacman -U”命令逐个降级所有更新的软件包。
如我们所知,pacman将所有下载的软件包保存在/var/cache/pacman/pkgs /文件夹中。

我从屏幕快照中记下了所有更新的软件包,并从缓存中将它们逐一降级为早期版本,如下所示。

pacman -U /var/cache/pacman/pkg/qt5-base-5.9.1-3-x86_64.pkg.tar.xz

上面的命令将从缓存文件夹中安装qt5-base软件包。
我花了将近半小时才将所有软件包降级。
如果我们已经清除了缓存文件夹,则别无选择。
重新安装可能是唯一的选择。
因此,我建议我们在缓存中至少保留两个旧版本,以便在新软件包中出现任何问题时可以将其还原。

降级所有软件包后,键入以下命令使更改生效并以正常模式启动Arch Linux。

exec /sbin/init

现在,我可以顺利登录到Arch Linux桌面了。
我认为我应该待几天,然后在解决此问题后再次尝试进行更新。

如果我们有时间和耐心,请降级一个软件包并运行“ exec/sbin/init”以将系统引导至正常模式,并检查其是否可以解决问题。
如果没有,请尝试其他软件包。
这样做直到找到有问题的程序包。
然后,只需离开有问题的软件包并更新所有其他软件包。