经历
有时间我就随手一句pacman -Syu
,果然,今天早上开机发现SDDM登录之后,Plasma无法启动了。滚挂了!
切换到另外一个tty,执行startkde
提示$DISPLAY is not set or cannot connect to x server
,那么问题就在Xorg、Intel驱动和Kde本身之间了。昨天我记得Xorg和Intel驱动都没有升级,而升级了plasma-desktop
和plasma-framework
这两个plasma的关键包,另外还有mesa
和mesa-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,那么你很容易将系统还原到升级之前。