软件包降级
在降级单个或多个软件包之前,请考虑您希望这样做的原因。 如果是由于错误,请遵循 错误报告指南。 即,在 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 年更改 的软件包构建,type
将为 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 并更改软件版本。 或者,在 软件包 网站上找到软件包,单击“查看更改”,然后导航到所需的版本。 然后可以从目录下载必要的文件,以便可以重新构建软件包。
另请参阅 Arch 构建系统#使用 pkgctl 工具。
旧的 AUR 软件包可以通过检出 AUR 软件包 Git 仓库中的旧提交来构建。 对于 2015 年之前的 AUR3 PKGBUILD,请参阅 Arch 用户仓库#AUR3 软件包的 Git 仓库。
自动化
- downgrade — 一个 Bash 脚本,用于通过使用 pacman 缓存或 Arch Linux 归档 来降级一个(或多个)软件包。 有关详细信息,请参阅 downgrade(8)。