如何将Ubuntu回滚到之前的版本?

我刚刚安装了新版本的Ubuntu,我想将其回滚到先前的版本。

我该如何做?这是否可行?


2这里是Ubuntu Wiki上的一个页面:https://help.ubuntu.com/community/DowngradeHowto。 - Quazi Irfan
这是为什么人们真正希望这件事发生并取得成功的原因之一:重新审视我们如何组装Linux系统。从同一个文件系统引导另一个操作系统或版本?这可能成为过去的问题了。 - LiveWireBT
9个回答

我的语言中有一句谚语大致可以翻译为“你不能通过将绞肉机的手柄逆转来把粉碎的肉再变回肉” "You can't turn mince back into meat by rotating the mincer's handle in the opposite direction" :)

升级过程是单向的 - 在安装新版本的软件时,包的后安装脚本会修改您的配置文件和设置,以使用新软件所需的新格式。基本上没有相反的程序 - 使较新的配置文件与旧软件兼容。


25我不同意,升级系统是指用新的软件包替换旧的软件包,这应该是一个可逆的过程(将新的软件包替换为旧的软件包)。在升级过程中,并没有固有的需要破坏任何东西,只是我们使用的大多数系统并不真正关心降级并且不支持它(好吧)。 - Suzanne Soy
15@GeorgesDupéron:你说得对,物理学没有规定升级不可能,所以完全有可能构建一个可以将系统升级/降级到任何版本的工具。然而,目前并没有这样的工具,所以我的回答适用于真实的Ubuntu及其升级工具。 - Sergey
+1 只是为了这句话!离题一下,这是哪种智慧的语言? - João Pimentel Ferreira
@JoãoPimentelFerreira: “Фарш невозможно провернуть назад” 是对一首流行的老歌进行开玩笑式改编,原歌词是“你无法把生活倒转回来”。 - Sergey
@Sergey 这个回答太荒谬了。服务器访问+库+互联网+正确的代码,这些都是你需要的来进行回滚操作,这在任何Mac上或者以前的WinXP系统中都可以实现(还原点)。Ubuntu没有实现这个功能,因为他们总是试图推出大量有缺陷的新版本。 - abhisek
我不是Mac用户,但最快速的谷歌搜索显示情况在Mac上差不多:“如果你的Mac正在运行较新版本的macOS,你将无法在其之上安装旧版本。在安装旧版macOS或Mac OS X之前,你必须完全清除你的Mac。”这样一个荒谬的评论,@abhisek :) - Sergey
只要你足够努力,任何事情都是可能的。问题不在于是否可能,而在于付出的努力是否值得。 - Owl

降级发布在一定程度上是可能的。通过足够的努力,可以实现(有关技术细节,请参阅其他答案)。
然而,最终得到的结果与升级前不同。在升级过程中,会进行某些单向更改以使新软件包正常运行,而降级操作无法撤销这些编辑。无法保证降级操作能够正常工作,更别提稳定性了。
简而言之,最简单的选择始终是重新安装。不要把它看作是一项繁琐的任务,而是一个很好的机会来减少软件包并更好地配置系统。
如果您将来想要测试某些东西,并担心可能会出现问题,请确保按照以下步骤操作:
  • 先测试一下LiveCD。如果你的硬件有问题,这样可以让你知道。
  • 在做任何操作之前备份。我知道每个人都已经告诉过你要这样做,但是如果你认为会遇到问题,这真的很重要。如果你不能在20分钟内没有机器,考虑使用一些全盘克隆工具,比如Clonezilla,这样你就可以恢复到之前的版本。还有其他工具也可以提供类似的结果。
  • 保持你的数据分离。将你的/home/放在与你的安装相同的分区中,如果你经常升级/降级东西,那么这将是一个头疼的问题。将其移到另一个磁盘或至少另一个分区,这样当你需要重新安装时,你只需要设置挂载点。
  • Ubuntu QA团队修复了一个关于降级的关键错误。确保你对此有所了解,因为有些人会建议你只需插入旧的CD并“升级”到它,但这是一个坏主意。

8你不需要单独分区,只需在损坏的系统上重新安装即可,参见此处:http://askubuntu.com/questions/247/whats-your-recommendation-on-drive-partitioning-schemes-for-a-desktop-and-home-s/3603#3603 - Jorge Castro
关键的漏洞似乎已经在12.04(Precise)中得到修复。因此,这个问题仍然会影响11.04和11.10,这两个版本现在已经停止维护。有人能够确认吗? - david6
1可以直接用所需版本覆盖系统文件吗?比如我使用的是12.10,想要回到12.04或更早的版本,不备份任何东西,只是通过全新安装来覆盖系统文件,这样可行吗? - Quazi Irfan
@iamcreasy 这就是我第二段所涉及的内容。升级通常是一种转变。你所描述的任何事情,如果没有备份,我都不会去做。 - Oli
1我只是在谈论覆盖系统文件。重新安装操作系统而不格式化硬盘。 - Quazi Irfan

在包装工具(apt)的级别上是可能的。但是由于许多软件包包含升级的特定支持(例如处理配置文件变化),而没有降级的支持,因此生成的系统可能与重新安装不同,并且可能出现错误。

通常,apt更喜欢安装软件包的最新版本。但是你可以通过固定版本来改变这一点:你可以声明旧版本的软件包比已安装的软件包优先级更高,这样当你执行aptitude dist-upgrade时它们将降级。

修改你的/etc/apt/sources.list文件,只包括旧版本(要么编辑该文件,要么使用你喜欢的图形用户界面),然后运行aptitude update。接下来编辑/etc/apt/preferences文件(在apt_preferences手册页中有文档),并添加以下行(以降级到lucid):

Package: *
Pin: release v=10.04
Pin-Priority: 1001

然后运行aptitude dist-upgrade。每个软件包的优先级都大于1000,因此在10.04中存在并安装在您的系统上的每个软件包都将被降级。您需要手动删除在10.04中不存在的软件包;它们将在aptitude中列在“过时和本地创建的软件包”下面。

这在我运行两次do-release-upgrade之后帮了我一把(因为第一次调用卡住了)。所以我可以将apt列表恢复到正确的版本。 - PeterM

他们说,“永远别说永远”,和“没有什么是不可能的” - 这两句话都是对的,但在你的情况下并不适用。我建议你要么备份数据并重新安装,要么坚持下去。随着时间的推移,系统应该会变得越来越稳定。
你也可以在现有安装的基础上重新安装(它会保留你的文件)。
作为一个经验法则,尽量避免在生产系统上升级到开发版本(特别是如果你不是测试人员/开发者)。

你可以手动完成。
首先生成一个你系统上已安装的列表。你可以在终端中输入以下内容来完成这个操作。
sudo dpkg --get-selections | grep '[[:space:]]install$' | \awk '{print $1}' > package_list

复制您的/home和/etc文件夹到备份介质。
重新安装Ubuntu 10.04。恢复您的备份(记得设置正确的权限)。然后运行以下命令以重新安装之前所有的程序。
cat package_list | xargs sudo apt-get install

请注意,您可能需要清理/etc和/home文件夹中的不兼容设置。

这就是为什么你不应该将主要安装升级到开发版本。如果你想测试开发版本,应该在一个单独的分区上进行,这样当出现问题时可以重新启动到稳定版本。

现在如果你想回到11.04,你需要重新安装它,并选择手动分区。在配置分区时不要勾选格式化选项,这样你的用户文件应该会保持完好。


回滚在某些独立的软件包中可能运行良好,但我从来不会期望整个发行版的大规模回滚会给你留下除了一个严重损坏的系统之外的任何东西(或者表面上看起来很好,但当你发现它越来越不正常时,奇怪的事情会不断浮出水面)。
APT只是尽可能地避免回滚,并且构成Ubuntu(以及Debian)发行版的软件包并没有平滑回滚作为设计目标。
除非您有可靠的整个系统备份,否则您真正需要做的是确保您的整个主目录已备份(可能还在单独的分区上),从所选版本的CD映像重新安装,并开始从主文件夹中恢复数据。您甚至可能需要有选择地恢复主目录中的“点文件”,以防一些已经适应新版本的文件与旧版本不完全兼容。
在执行此操作之前,您可能希望查看已安装的软件包并记录您依赖的软件包,以便您可以重新安装它们。有工具可以备份和恢复已安装软件包的列表,但如果您在不同版本之间切换,我通常不建议这样做,因为所需/包含的软件包可能已更改。

简单的方法是从之前版本的CD/DVD或USB驱动器启动,并通过覆盖现有安装来重新安装Ubuntu。
不要忘记先备份:您的“home”目录和其他可能包含个人数据的任何地方。

3先备份你的文件吧 ;) - Achu

简单来说:没有。抱歉...(这就是升级到测试版本的危险!)

2如果我事先知道Ubuntu在Netbook Remix上的表现如此糟糕,我根本不会升级。重新安装并不是一个大问题,但我认为这个问题值得发帖讨论一下。 - Diago
@Diago 只是出于好奇,这是对新界面的完全不喜欢吗?还是只是认为它还没有完成? - 8128
有点两者兼而有之。从非技术用户的角度来看,我对可用性的不足感到沮丧。我可以找到解决方法并安装额外的软件以获得功能,但我无法想象一个完全的新手如何能够应对。我认为如果他们计划在十月的截止日期前完成,还需要做很多工作。 - Diago