软件包降级

来自 ArchWiki
(重定向自 Downgrading)

在降级单个或多个软件包之前,请考虑您希望这样做的原因。 如果是由于错误,请遵循 错误报告指南。 即,在 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.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 软件仓库