降级软件包 - Arch Linux 中文维基

跳转到内容

# 降级软件包

来自 Arch Linux 中文维基
翻译状态：

- 本文（或部分内容）译自 Downgrading packages，最近一次同步于 2020-09-12，若英文版本有所更改，则您可以帮助同步与翻译更改的内容。
- 您可以在 ArchWiki 的对应页面找到本文翻译的原始修订历史。
- 本文可能与英文原文存在出入。

相关文章

- Arch Build System
- pacman
- Arch Linux Archive

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

警告：

- 降级某个软件包可能需要降级相应的依赖包.如果依赖包数量巨大,参见Arch Linux Archive#How to restore all packages to a specific date.
- 在修改配置文件和脚本时请小心.只要我们不绕过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.

### 自动化

downgrade — 基于Bash使用本地缓存和Arch Rollback Machine。详见downgrade(8)。

  https://github.com/pbrisbin/downgrade || downgradeAUR

## 从[testing]中返回

参见 Official repositories#Disabling testing repositories。

分类：​

- 包管理

降级软件包
添加话题