软件包降级

出自 ArchWiki

在降级单个或多个软件包之前,请考虑您希望这样做的原因。如果是由于错误,请遵循错误报告指南。即在 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.confIgnorePkg 部分,直到更新后的软件包的难题得到解决。

降级内核

如果新内核出现问题,可以将 Linux 软件包降级到上次可正常工作的版本#使用 pacman 缓存。进入 /var/cache/pacman/pkg 目录并至少降级 linuxlinux-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
提示: 如果内核更新后无法启动,您可以chroot 进入系统来降级内核。使用 Arch Linux USB 闪存安装介质启动,并将安装系统的分区挂载到 /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)
https://github.com/pbrisbin/downgrade || downgradeAUR

从 [testing] 返回

请参阅官方软件仓库#禁用 testing 软件仓库