Difference between revisions of "Downgrading packages (简体中文)"

From ArchWiki
Jump to: navigation, search
m (updated link)
Line 50: Line 50:
  
 
== 参考资料 ==
 
== 参考资料 ==
* 参考[[ABS - The Arch Build System]] 以了解更多相关信息
+
* 参考[[Arch Build System]] 以了解更多相关信息
 
* 参考[[LVM2]] 以了解如何启用LVM快照并恢复指定状态。
 
* 参考[[LVM2]] 以了解如何启用LVM快照并恢复指定状态。

Revision as of 02:30, 17 June 2012

Template:Temporary i18n

Tango-preferences-desktop-locale.png本页面需要更新翻译,内容可能已经与英文脱节。要贡献翻译,请访问简体中文翻译组Tango-preferences-desktop-locale.png

附注: please use the first argument of the template to provide more detailed indications.

如何降级软件包

  • 问: 当我运行 pacman -Syu 将软件包从版本甲升级到版本乙之后,发现这个软件包导致系统出现了一些问题,我该怎样将该软件包重新降级到版本甲呢?
  • 答: 如果该包不是很重要的话,你可以降级的。先查看你系统的/var/cache/pacman/pkg目录,看看旧版本的软件包是不是还保存在那儿 (如果你最近没有执行 pacman -Scc以清空包缓存的话,应该在那儿)。 如果在,你可以执行pacman -U pkgname-olderpkgver.pkg.tar.gz来安装旧版本。如果pacman提示文件冲突的话,你可以通过加上-f参数以强制执行,即 pacman -Uf pkgname-olderpkgver.pkg.tar.gz

这个过程会移除现有的包,仔细的计算所有依赖的改变,然后安装你选择的旧版本的软件包以及合适的依赖。

注意: 如果你改变了操作系统的一个基本的组件,你也许需要取出很多包,然后用它们的旧版本替代。Or they may just be gone and you will have to put them back in a manual, piece-meal fashion, while being careful that a particular upgrade does not want to re-install the undesirable package version you did not want in the first place.

AUR 中有一个包叫做 downgrade。它是一个简单的 Bash 脚本,它会寻找你的缓存中的旧版本的包,也会搜索 A.R.M. 查看是否你的缓存里面没有包。你也可以选择一个包来安装。它基本上自动化了上面所述的过程。查看 downgrade --help 获取使用方法的信息。

另一个更强大的工具是 downgrader,它可以处理 pacman 的 log,能从 ARM、本地缓存降级,并且可以列出包 (如果在升级一些包后不稳定,而你不确定包的名字)

如何找到旧版本

如果你本地系统里没有旧版的软件包,检查一下我们的更新源里有没有还没来得及更新的,如果有的话可以从那儿下载旧版软件包。你可以点击这里看看各镜像源的状态.

过期源

你也可以查看这个镜像,它存储了旧的包:

ARM

手动编译

最糟糕的情况,如果这些地方都没有找到,那你就需要自己动手编译旧版本的软件包了。如果决定这样做,就可以从abs中先取出该软件包的PKGBUILD文件,然后修改相应的内容(通常是版本号)。或者访问 http://www.archlinux.org/packages/ 搜索你需要的降级的软件包,然后点 "View SVN entries" 链接,查看当前包的PKGBUILD和前一版本有何不同(ie: for the revision you are interested in). 如果你使用的是 "side by side" diff视图,你可以直接把旧版本的PKGBUILD的内容直接拷贝到本地,然后用他来编译。

禁止Pacman升级不想升级的包

  • 问: 我怎么才能禁止Pacman升级那些我需要保持低版本的包呢?
  • 答: 修改/etc/pacman.conf中的'IgnorePkg' 变量值。

/etc/pacman.conf中,有一行是'IgnorePkg = 第一个包 第二个包 ……',他的作用就是在执行全系统升级的时候,跳过某些包。

恢复到指定日期的状态

  • 问: 我想恢复到我昨天的状态。
  • 答: 你可以通过启用快照很容易的达到该目的。

你可以通过创建一个逻辑分卷管理器(LVM)来创建和维护你的快照。不要和CVS版本控制系统中的快照搞混了。LVM快照是一种内核级别的文件系统快照,和全系统备份所不同的是,通过试用COW (copy-on-write)模式,即便是文件被修改了,快照也只需要占用比实际大家稍大一点的空间用来保存修改前的文件。换句话说,由于pacman -Sy只会修改远远小于2GB的数据,所以快照只需2GB的空闲空间就可以保存35GB的系统快照。 如果你系统的状态在升级后不正常了,你就可以迅速的通过回滚到前一个系统快照镜像。

参考资料

  • 参考Arch Build System 以了解更多相关信息
  • 参考LVM2 以了解如何启用LVM快照并恢复指定状态。