# Downgrading packages (简体中文)

From ArchWiki
Jump to navigation Jump to search
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.

相关文章

- Arch Build System (简体中文)
- pacman (简体中文)
- Arch Linux Archive (简体中文)

翻译状态：本文是 Downgrading packages 的翻译。上次翻译日期：2020-09-12。如果英文版本有所更改，则您可以帮助同步翻译。

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

警告：

- 降级某个软件包可能需要降级相应的依赖包.如果依赖包数量巨大,参见Arch Linux Archive (简体中文)#如何恢复所有包到指定日期.
- 在修改配置文件和脚本时请小心.只要我们不绕过pacman的安全措施,它将为我们处理这些问题.
- 如果软件包降级会引进 soname 变更，所有依赖包可能都需要降级或重新编译.

## 如何降级软件包

### 使用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.conf`的IgnorePkg section，直到您的问题被解决。

### 降级内核

新内核出问题时，可以通过使用 pacman 缓存降级内核。在`/var/cache/pacman/pkg` 寻找旧版安装包。必须降级的有linux， linux-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 Archive是official 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。

Category:

- Package management (简体中文)