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

From ArchWiki
Jump to navigation Jump to search
(跟进原文)
(fixed section fragments (interactive))
Tag: wiki-scripts
 
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[Category:简体中文]]
 
 
[[Category:Package management (简体中文)]]
 
[[Category:Package management (简体中文)]]
 
[[cs:Downgrading packages]]
 
[[cs:Downgrading packages]]
Line 9: Line 8:
 
[[it:Downgrading packages]]
 
[[it:Downgrading packages]]
 
[[ja:パッケージのダウングレード]]
 
[[ja:パッケージのダウングレード]]
 +
[[pt:Downgrading packages]]
 
[[ru:Downgrading packages]]
 
[[ru:Downgrading packages]]
 
[[sk:Downgrading packages]]
 
[[sk:Downgrading packages]]
[[tr:Paket sürümünü düşürmek]]
 
[[uk:Downgrading packages]]
 
 
{{Related articles start (简体中文)}}
 
{{Related articles start (简体中文)}}
 
{{Related|Arch Build System (简体中文)}}
 
{{Related|Arch Build System (简体中文)}}
Line 18: Line 16:
 
{{Related|Arch Linux Archive (简体中文)}}
 
{{Related|Arch Linux Archive (简体中文)}}
 
{{Related articles end}}
 
{{Related articles end}}
{{Expansion|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]]}}
+
{{TranslationStatus (简体中文)|Downgrading_Packages|2017-10-12|492967}}
{{TranslationStatus (简体中文)|Downgrading_Packages|2016-03-25|422336}}
+
在决定降级之前,请小心考虑。如果是因为现有包有Bug,请在[https://bugs.archlinux.org/ Bug追踪系统]搜索现有的Bug报告。如果没有,请花上几分钟帮忙把它报告给Arch的Bug追踪系统或软件包的项目地址,或者在论坛中警告其他可能遇到类似问题的用户。
在降级之前,好好考虑下你为什么要降级.如果是因为现有包有Bug,请在[https://bugs.archlinux.org/ Bug追踪系统]搜索现有的Bug报告.如果没有,请花上几分钟帮忙把它报告给Arch的Bug追踪系统或软件包的项目地址,或者至少警告其他可能遇到类似问题的用户.
 
  
 
{{警告|
 
{{警告|
* 降级某个软件包可能需要降级相应的依赖包.如果软件包数量巨大,参见[[Arch Linux Archive (简体中文)#如何恢复所有包到指定日期]].
+
* 降级某个软件包可能需要降级相应的依赖包.如果依赖包数量巨大,参见[[Arch Linux Archive (简体中文)#如何恢复所有包到指定日期]].
* 在修改配置文件和脚本时请小心.现在只要我们不绕过pacman的安全措施,它将为我们处理这些问题.}}  
+
* 在修改配置文件和脚本时请小心.只要我们不绕过pacman的安全措施,它将为我们处理这些问题.
 +
* 如果软件包降级会引进 soname 变更,所有依赖包可能都需要降级或[[Frequently_asked_questions#What if I run a full system upgrade and there will be an update for a shared library, but not for the apps that depend on it?|重新编译]].
 +
}}  
  
 
== 如何降级软件包 ==
 
== 如何降级软件包 ==
Line 30: Line 29:
 
=== 使用pacman的临时文件 ===
 
=== 使用pacman的临时文件 ===
  
如果一个包刚刚被安装并且[[Pacman#Cleaning_the_package_cache|pacman cache]]没有被清除,你可以在{{ic|/var/cache/pacman/pkg/}}寻找并安装早的版本.
+
如果一个新包刚刚被安装并且没有删除[[Pacman#Cleaning_the_package_cache|pacman cache]],你可以在{{ic|/var/cache/pacman/pkg/}}中找到较早版本.
这个方法会删除现有的版本并安装老的版本.依赖包会被处理但[[pacman]]并不会处理依赖库的版本冲突.如果一个其他包或依赖库因该包降级需要降级,你将不得不手动降级这些包.
+
安装替换现有的版本.[[pacman]]会处理依赖包但不会处理依赖库的版本冲突。如果一个其依赖库因该包降级需要降级,你需要手动降级这些包。
  
  # cd /var/cache/pacman/pkg/
+
  # pacman -U /var/cache/pacman/pkg/''package''-''old_version''.pkg.tar.xz
# pacman -U <file_name_of_the_package>
 
  
当成功降级该包以后,请暂时性地将其加入{{ic|pacman.conf}}的[[Pacman#Skip package from being upgraded|IgnorePkg section]],等待问题被解决.
+
当成功降级该包以后,请暂时将其加入{{ic|pacman.conf}}的[[Pacman#Skip package from being upgraded|IgnorePkg section]],直到您的问题被解决。
  
 
=== 降级内核 ===
 
=== 降级内核 ===
  
如果您在升级内核后无法启动,您可以通过使用live CD来降级内核.方法类似Arch Linux的安装进程.启动后在{{ic|/mnt}}挂载你的根目录文件系统,如果有其他分区如{{ic|/boot}}或{{ic|/var}}等等,同样地,请挂载它们.(例子 {{ic|mount /dev/sdc3 /mnt/boot}}).然后[[chroot]].
+
如果您在升级内核后无法启动,您可以通过使用 live CD 来降级内核。方法类似Arch Linux的安装进程。启动后在{{ic|/mnt}}挂载你的根目录文件系统,别忘了挂载其他分区如{{ic|/boot}}或{{ic|/var}}等等。(例子 {{ic|mount /dev/sdc3 /mnt/boot}})。然后[[chroot]]进入系统。
  
 
  # arch-chroot /mnt /bin/bash
 
  # arch-chroot /mnt /bin/bash
  
现在你可以在{{ic|/var/cache/pacman/pkg}} 寻找旧的安装包.必须降级的有{{Pkg|linux}}, {{Pkg|linux-headers}}和任何内核模块.举例来说:
+
现在你可以在{{ic|/var/cache/pacman/pkg}} 寻找旧的安装包。必须降级的有{{Pkg|linux}}{{Pkg|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
 
  # 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 ===
  
[[Arch Linux Archive]]是[[official repositories]]的日更快照.
+
[[Arch Linux Archive]]是[[official repositories]]的日更快照。
  
''ALA''能被用来降级包或者还原整个系统到过去版本.
+
''ALA''能被用来降级包或者还原整个系统到过去版本。
  
 
=== 手动编译 ===
 
=== 手动编译 ===
最糟糕的情况,如果这些地方都没有找到,那你就需要自己动手编译旧版本的软件包了。如果决定这样做,就可以从abs中先取出该软件包的PKGBUILD文件,然后修改相应的内容(通常是版本号)。或者访问 https://www.archlinux.org/packages/ 搜索你需要的降级的软件包,然后点 "查看修改" 链接,选择“查看日志“。找到你需要的版本然后点击路径。然后下载相应的文件再用makepkg编译即可。
 
  
对于AUR包来说,只能在http://pkgbuild.com/git/aur-mirror.git/ 处找到旧包的PKGBUILD,或者你可以到[Unofficial User Repositories]]处找到旧的二进制包。
+
如果找不到编译好的软件包,就需要自己找到 [[PKGBUILD]] 并通过 [[makepkg]] 编译。
 +
 
 +
[[official repositories|官方软件仓库]]中的 PKGBUILD 可以通过 [[ABS]] 获取并修改软件版本。或者访问 [https://www.archlinux.org/packages 软件包]页面搜索你需要的降级的软件包,然后点 "查看修改" 链接,选择“查看日志“。找到需要的版本并通过 ''Tree'' 视图下载 {{ic|.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]].
  
 
==== vABS - Versioned Arch Build System ====
 
==== vABS - Versioned Arch Build System ====
  
[https://vabs.archlinux-br.org vABS] is an addition to ABS that has as main goal to keep different versions of the official PKGBUILDs. In ABS you have the latest versions of PKGBUILDs, while in vABS you also have old versions (up to 2 years). Select the desired version and download the build files tgz package or individual files and easily build your package with pkgbuild. More information about the service can be found [https://www.archlinux-br.org/vabs_en here].
+
[https://vabs.archlinux-br.org vABS] 是一个ABS的拓展物,主要用来保存不同版本的官方PKGBUILD。你能够在其中找到两年内的旧版本。选择你期望的版本并编译安装,详细参见[https://www.archlinux-br.org/vabs_en 这里].
  
=== 自动的方法 ===
+
=== 自动化 ===
  
在 [[AUR]] 中有一个包叫做{{AUR|downgrade}}。它是一个简单的 Bash 脚本,它会从你的缓存中寻找旧版本的包,如果没有的话它会搜索 [[#ARM|A.R.M.]]。你可以选择一个旧包来安装。它基本上自动化了上面所述的过程。查看 {{Ic|downgrade --help}} 获取使用方法的信息。
+
{{AUR|downgrader}} 是一个基于libalpm的小工具, 支持 pacman log,使用 [[Arch Linux Archive]],本地缓存和[http://repo-arm.archlinuxcn.org ARM]进行降级.
  
另一个更强大的工具是{{AUR|downgrader}},它可以处理 pacman 的 log,能从 ARM、本地缓存降级,并且可以处理包列表 (如果在升级一些包后不稳定,而你不确定包的名字)
+
{{AUR|downgrade}} 基于Bash使用本地缓存和[[Arch Rollback Machine]]。详见{{ic|man downgrade}}。
  
{{AUR|agetpkg-git}} quickly lists/gets/installs packages from the [[Arch Linux Archive]].
+
{{AUR|agetpkg-git}}功能与上述类似。
  
 
== 从[testing]中返回 ==
 
== 从[testing]中返回 ==
  
参见 [[Official repositories#Disabling testing repositories]].
+
参见 [[Official repositories#Disabling testing repositories]]

Latest revision as of 16:27, 26 December 2017

翻译状态: 本文是英文页面 Downgrading_Packages翻译,最后翻译时间:2017-10-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.xz

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

降级内核

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

# arch-chroot /mnt /bin/bash

现在你可以在/var/cache/pacman/pkg 寻找旧的安装包。必须降级的有linuxlinux-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 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.

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