Arch滚挂了怎么办?

经历

有时间我就随手一句pacman -Syu,果然,今天早上开机发现SDDM登录之后,Plasma无法启动了。滚挂了!

切换到另外一个tty,执行startkde提示$DISPLAY is not set or cannot connect to x server,那么问题就在Xorg、Intel驱动和Kde本身之间了。昨天我记得Xorg和Intel驱动都没有升级,而升级了plasma-desktopplasma-framework这两个plasma的关键包,另外还有mesamesa-libgl,因为Intel驱动部分是依赖他们俩的。

进入/var/cache/pacman/pkg,降级这几个包pacman -U xxx.pkg.gz.xz,重启,解决。

滚挂之前应该做什么?

  • 更新前到官网查看更新内容
  • 勤升级是个好习惯
  • 做一个LiveCD备用
  • 不要老是清空pacman的软件包缓存,因为downgrade的时候会用到
  • pacman时避免加--force

滚挂之后应该做什么?

检查更新内容

查看/var/log/pacman.log,看看这次更新你更新了什么,结合系统出现的状况。

软件包降级

  • 通过本地pacman cache
  • 通过旧版本的PKGBUILD,手动编译
  • Arch Linux Archive(以前叫Arch Linux Rollback Machine)是一个官方的每日快照。你可以从ALA下载某个package到本地然后降级安装,如果要降级所有package到某个日期则修改/etc/pacman.conf或者/etc/pacman.d/mirrorlist软件源为ALA中某个日期的存档,然后降级pacman -Syyuu
  • 使用downgrader或者downgrade这样的自动化工具,他们可以自动帮你从本地cache或ALA降级一个或多个package。

内核降级

就需要通过LiveCD,arch-chroot进入系统,然后降级内核包,方法和普通软件包一样。

回到昨天

如果你使用了LVM对硬盘管理,并且在升级系统之前创建了Snapshots,那么你很容易将系统还原到升级之前。

参考资料

2016-01-18 16:00