# Downgrading packages (简体中文)

相关文章

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

This article or section needs expansion.

Reason: soname bumps, cf. Frequently_asked_questions#What_if_I_run_a_full_system_upgrade_and_there_will_be_an_update_for_a_shared_library.2C_but_not_for_the_apps_that_depend_on_it.3F (Discuss in Talk:Downgrading packages (简体中文)#)
翻译状态： 本文是英文页面 Downgrading_Packages 的翻译，最后翻译时间：2016-08-05，点击这里可以查看翻译后英文页面的改动。

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

警告:

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

## 如何降级软件包

### 使用pacman的临时文件

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

    # cd /var/cache/pacman/pkg/
    # pacman -U <file_name_of_the_package>

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

### 降级内核

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

    # arch-chroot /mnt /bin/bash

现在你可以在`/var/cache/pacman/pkg` 寻找旧的安装包。必须降级的有linux， linux-headers和任何内核模块。举例来说：

    # pacman -U linux-3.5.6-1-x86_64.pkg.tar.xz linux-headers-3.5.6-1-x86_64.pkg.tar.xz virtualbox-host-modules-4.2.0-5-x86_64.pkg.tar.xz

退出并重启。

### Arch Linux Archive

Arch Linux Archive是official repositories的日更快照。

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

### 手动编译

如果上述方法都失效，那你就需要自己动手编译旧版本的软件包了。从abs中先取出该软件包的PKGBUILD文件，然后修改相应的内容（通常是版本号）。或者访问 https://www.archlinux.org/packages/ 搜索你需要的降级的软件包，然后点 "查看修改" 链接，选择“查看日志“。找到你需要的版本然后点击路径。然后下载相应的文件再用makepkg编译即可。

对于AUR包来说，只能在http://pkgbuild.com/git/aur-mirror.git/ 处找到旧包的PKGBUILD，或者你可以到[Unofficial User Repositories]]处找到旧的二进制包。

#### vABS - Versioned Arch Build System

vABS 是一个ABS的拓展物，主要用来保存不同版本的官方PKGBUILD。你能够在其中找到两年内的旧版本。选择你期望的版本并编译安装，详细参见这里.

### 自动化

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

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

agetpkg-gitAUR功能与上述类似。

## 从[testing]中返回

参见 Official repositories#Disabling testing repositories。

Categories:

- 简体中文
- Package management (简体中文)

Hidden category:

- Pages or sections flagged with Template:Expansion