Downgrading packages (简体中文)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
翻译状态:本文是 Downgrading packages翻译。上次翻译日期:2020-09-12。如果英文版本有所更改,则您可以帮助同步翻译。

在决定降级之前,请小心考虑。如果是因为现有包有Bug,请在Bug追踪系统搜索现有的Bug报告。如果没有,请花上几分钟帮忙把它报告给Arch的Bug追踪系统或软件包的项目地址,或者在论坛中警告其他可能遇到类似问题的用户。

警告:

如何降级软件包

使用pacman的临时文件

如果一个新包刚刚被安装并且没有删除pacman cache,你可以在/var/cache/pacman/pkg/中找到较早版本. 安装替换现有的版本.pacman会处理依赖包但不会处理依赖库的版本冲突。如果一个其依赖库因该包降级需要降级,你需要手动降级这些包。

 # pacman -U /var/cache/pacman/pkg/package-old_version.pkg.tar.type

对老的软件包,type 应该是 xz,遵循 2020 变更的新软件包,type 应该是 zst

当成功降级该包以后,请暂时将其加入pacman.confIgnorePkg section,直到您的问题被解决。

降级内核

新内核出问题时,可以通过使用 pacman 缓存降级内核。在/var/cache/pacman/pkg 寻找旧版安装包。必须降级的有linuxlinux-headers和任何内核模块。举例来说:

# pacman -U linux-4.15.8-1-x86_64.pkg.tar.xz linux-headers-4.15.8-1-x86_64.pkg.tar.xz virtualbox-host-modules-arch-5.2.8-4-x86_64.pkg.tar.xz

退出并重启。

如果您在升级内核后无法启动,您可以通过使用 live CD 来降级内核。方法类似Arch Linux的安装进程。启动后在/mnt挂载你的根目录文件系统,别忘了挂载其他分区如/boot/var等等。(例子 mount /dev/sdc3 /mnt/boot)。然后chroot进入系统。

Arch Linux Archive

Arch Linux Archiveofficial repositories的日更快照。

ALA能被用来降级包或者还原整个系统到过去版本。

手动编译

如果找不到编译好的软件包,就需要自己找到 PKGBUILD 并通过 makepkg 编译。

官方软件仓库中的 PKGBUILD 可以通过 ABS 获取并修改软件版本。或者访问 软件包页面搜索你需要的降级的软件包,然后点 "查看修改" 链接,选择“查看日志“。找到需要的版本并通过 Tree 视图下载 .tar.gz 快照。

参阅 Arch Build System#Checkout an older version of a package.

老的 AUR 软件包可以从 AUR 软件包 git 仓库提出旧版本。如果是 2015 AUR3 之前的 PKGBUILD,请参阅 Arch User Repository#Git repositories for AUR3 packages.

自动化

downgrader-gitAUR 是一个基于libalpm的小工具, 支持 pacman log,使用 Arch Linux Archive,本地缓存和ARM进行降级.

downgradeAUR 基于Bash使用本地缓存和Arch Rollback Machine。详见man downgrade

从[testing]中返回

参见 Official repositories#Disabling testing repositories