软件包降级
在降级单个或多个软件包之前,请考虑您希望这样做的原因。如果是由于错误,请遵循错误报告指南。即在 Arch Linux Bugtracker 中搜索现有任务,如果没有,则添加新任务。最好更正错误,或者至少警告其他用户可能存在的问题。
- 降级一个软件包可能需要同时降级其依赖项。当要降级的软件包数量很大时,请考虑使用快照。请参阅Arch Linux 归档#如何将所有软件包恢复到特定日期。
- 请小心配置文件和脚本的更改。目前,只要我们不绕过 pacman 的安全措施,pacman 就会为我们处理这个问题。
- 如果降级涉及到 soname 更改,则所有依赖项可能也需要降级或重新构建。
返回到较早的软件包版本
使用 pacman 缓存
如果软件包在早期阶段已安装,并且pacman 缓存未被清理,请从 /var/cache/pacman/pkg/
安装较早的版本。
此过程将删除当前软件包并安装旧版本。依赖项更改将被处理,但 pacman 不会处理版本冲突。如果库或其他软件包需要与这些软件包一起降级,请注意您也必须自行降级此软件包。
# pacman -U file:///var/cache/pacman/pkg/package-old_version.pkg.tar.type
请注意,对于较旧的软件包构建,type
将为 xz
,对于遵循2020 年更改的软件包构建,将为 zst
。
软件包还原后,暂时将其添加到 pacman.conf
的 IgnorePkg 部分,直到更新后的软件包的难题得到解决。
降级内核
如果新内核出现问题,可以将 Linux 软件包降级到上次可正常工作的版本#使用 pacman 缓存。进入 /var/cache/pacman/pkg
目录并至少降级 linux、linux-headers 和任何内核模块。例如
# pacman -U file://linux-4.15.8-1-x86_64.pkg.tar.xz file://linux-headers-4.15.8-1-x86_64.pkg.tar.xz file://virtualbox-host-modules-arch-5.2.8-4-x86_64.pkg.tar.xz
/mnt
。如果您的 /boot
或 /var
位于单独的分区上,也请将它们挂载到 /mnt
(例如 mount /dev/sdc3 /mnt/boot
)。然后使用 chroot 进入系统# arch-chroot /mnt现在您可以进入 pacman 缓存目录并使用上面指示的命令降级 Linux 软件包。完成后,退出 chroot(使用
exit
)并重新启动。Arch Linux 归档
Arch Linux 归档是官方软件仓库的每日快照。它可以用于安装以前的软件包版本,或将系统恢复到较早的日期。
重新构建软件包
如果软件包不可用,请找到正确的 PKGBUILD 并使用 makepkg 重新构建它。
对于来自官方软件仓库的软件包,请使用 ABS 检索 PKGBUILD 并更改软件版本。或者,在 软件包 网站上找到软件包,单击“查看更改”,然后导航到所需的版本。然后可以从目录下载必要的文件,以便可以重新构建软件包。
旧的 AUR 软件包可以通过检出 AUR 软件包 Git 仓库中的旧提交来构建。对于 2015 年之前的 AUR3 PKGBUILD,请参阅Arch 用户仓库#AUR3 软件包的 Git 仓库。
自动化
- downgrade — 一个 Bash 脚本,用于通过使用 pacman 缓存或 Arch Linux 归档来降级一个(或多个)软件包。有关详细信息,请参阅 downgrade(8)。