如何从17.04升级到最新的非LTS版Ubuntu?

如何从17.04 LTS升级到最新的非LTS版本?这是一台较老的笔记本电脑,我不确定该如何操作。使用标准更新无法完成。

1Ubuntu 17.04从2017年4月开始应该升级到17.10,然后是18.04,因为它是非LTS版本,预计在9个月的时间窗口内进行升级。它还使用了Unity 7作为默认桌面环境,但现已被GNOME取代。我建议重新安装,但请参考https://help.ubuntu.com/community/EOLUpgrades获取EOL升级信息。 - guiverc
1如果你的笔记本电脑比较老,而且你没有提供任何详细信息,那么 GNOME 可能不是最适合它的桌面环境(它比你之前使用的桌面环境更占用资源),你可以考虑切换到其他桌面环境(我就这么做了!)。如果你不想每6-9个月进行版本升级,建议使用LTS版本。 - guiverc
2在你的情况下,我建议你下载Ubuntu 19.04(或者你喜欢的其他版本),将其写入媒体并备份你的系统。使用"something-else"选项安装新系统时,选择覆盖现有系统(我会选择不格式化)。这样做会保留你添加的应用程序,清除系统目录(不会触及$HOME目录),安装新系统,并重新添加你在软件仓库中安装的额外程序。然后系统会要求重启。这个方法只适用于"something-else"选项中的"no-format"选项。这是我会选择的方法(比EOL升级更快速)。 - guiverc
1请注意,Ubuntu 17.04 不是长期支持版本,这也是为什么它已经终止更新。只有在偶数年的四月份发布的版本(8.04、10.04、12.04、14.04、16.04、18.04和明年的20.04)才是长期支持版,请查看17.04的发行说明(https://wiki.ubuntu.com/ZestyZapus/ReleaseNotes),其中明确提到:“Ubuntu 17.04将会受支持,直到2018年1月共计9个月。如果您需要长期支持,请使用Ubuntu 16.04 LTS。” - guiverc
2个回答

你应该考虑进行全新安装,正如guiverc所建议的,因为那样会起作用。
但如果你愿意,你也可以尝试升级。我昨天成功地测试了这个方法。我使用的方法包括三个升级步骤:从17.04升级到17.10,从17.10升级到18.04 LTS,然后从18.04 LTS升级到19.04。我在各自的部分中详细介绍了这三个步骤。
关于为什么这个特定的升级顺序有效而其他顺序无效,请参阅下面的“这是怎么可能的,为什么有必要?”部分。一些读者可能对此不太感兴趣,所以我将指示放在了前面。

17.04 到 17.10

可以通过对笑话的出色回答中的过程进行变化来实现,以如何安装软件或从旧的不受支持的版本升级为例

1. 编辑`/etc/apt/sources.list`文件,将存储库的URL更改为change your repository URLs以使用the old-releases server。您可以使用`less /etc/apt/sources/list`命令或在文本编辑器中打开文件进行查看。自动执行编辑的一种方法是运行以下命令: ``` sudo sed -i.orig -r 's/us\.archive\.|security\./old-releases./' /etc/apt/sources.list ``` 在使用该命令之前,请检查现有的`sources.list`文件。在该`sed`命令中,在运行之前,更改`us`为适当的值(或者如果您使用主服务器`archive.ubuntu.com`,则删除`us\.`)。 有关替代方法,请参阅this post by fossfreedom中的`sed`命令。
2. 更新软件包管理器以了解可用的软件包及其来源: ``` sudo apt update ``` 如果出现错误,请停止并调查错误。可能是第一步操作不正确。
3. 将当前发行版内的软件包升级到最新版本: ``` sudo apt upgrade ```
4. 创建一个临时目录(可以在您的家目录中),然后进入该目录,并下载并提取the upgrade tool for 17.10,运行以下命令: ``` cd mkdir tmp wget http://old-releases.ubuntu.com/ubuntu/dists/artful-updates/main/dist-upgrader-all/current/artful.tar.gz tar xf artful.tar.gz ``` 通常情况下,Software Updaterdo-release-upgrade命令会自动下载并运行此工具,但在这种情况下,它不会因为17.10已经到了生命周期结束。通常情况下,在无法自动下载时,您仍然可以从the meta-release file中获取工具的有效URL,如laugh's answer所示,但在这种情况下,该文件(尚)不反映该工具已被移至old-releases服务器。 在这种情况下,您可以将URL中的`archive.ubuntu.com`中的`archive`替换为`old-releases`以获得有效的URL。基本上,您可以尝试使用它说要使用的URL进行下载,如果失败,则尝试从old-releases服务器下载。这就是我获取上述URL的方法。
5. 进入提取的目录,并以root身份运行该工具: ``` cd artful sudo ./artful ``` 一个名为Distribution Upgrade的窗口应该弹出,显示消息Upgrading Ubuntu to version 17.10,并列出六个步骤:Preparing to upgrade, Setting new software channels, Getting new packages, Installing the upgrades, Cleaning up, and Restarting the computer(请注意,这些步骤与本帖中的指令编号不对应!)第一步应该成功完成。
6. 在"Setting new software channels"步骤中,将会出现一个dialog box,其中包含以下消息: ``` No valid mirror found While scanning your repository information no mirror entry for the upgrade was found. This can happen if you run an internal mirror or if the mirror information is out of date. Do you want to rewrite your 'sources.list' file anyway? If you choose 'Yes' here it will update all 'zesty' to 'artful' entries. If you select 'No' the upgrade will cancel. ``` 点击“Yes”。
之所以有效,是因为与17.04(Zesty Zapus)存储库一样,17.10(Artful Aardvark)
17.10到18.04 LTS
这个过程要简单得多,至少如果没有出现问题的话。事实上,我之所以在下面列出了一系列步骤,只是为了清楚地指出可能出错的地方以及如何处理。我认为在这次升级中出现问题的可能性比之前的升级更大,因为自从17.10版本停止维护以来,18.04 LTS中的许多软件包都已经更新到了较新的版本。
在我尝试升级的其中一次中,确实出现了问题,但我很容易就修复了,具体方法如下所述。另一次,我在升级之前移除了open-vm-tools和open-vm-tools-desktop软件包,即使这些软件包是从Ubuntu官方仓库安装的,但是在没有它们的情况下继续进行升级后问题就消失了。(除非你使用的是VMware虚拟机,否则你可能没有安装这两个软件包,但你可能有其他会引起问题的软件包。)
因为17.10不受支持,但18.04 LTS是受支持的,软件更新器会自动提供升级到18.04 LTS的选项。如果没有自动弹出,请运行软件更新器。
如果仍然没有提供更新选项,请退出软件更新器,运行sudo apt update,然后再次运行它。
点击“升级...”按钮。
显示发行说明。在窗口底部点击“升级”按钮。
显示升级将要执行的操作列表,与上一次升级的第7步相同,并询问您是否要开始升级。
点击“开始升级”按钮。
分发升级窗口显示“正在将Ubuntu升级到版本18.04”,这次显示了升级的六个步骤。(如上所述,这些步骤与本说明的编号不对应。)至少前三个步骤应该顺利进行。
第四个步骤“安装升级”需要最长时间。如果您展开了终端视图,可能会看到看起来像是错误的消息。如果确实是错误消息,不要担心:任何需要知道的错误都会在稍后明确显示给您。
如果有错误导致升级无法完成,将弹出一个对话框,上面写着:
无法安装升级
升级已中止。您的系统可能处于不可用状态。现在将运行恢复(dpkg --configure -a)。
如果您没有遇到这种情况,请不要按照本步骤的其余说明操作,而是跳转到本说明的第16步。
如果发生了这种情况,请点击关闭。升级工具将尝试通过运行dpkg --configure -a来修复问题。这将尝试配置损坏或未配置的软件包,但不会安装任何尚未开始安装的软件包。然后它可能会告诉您升级已完成但存在错误。
升级工具关闭后,运行:
sudo apt install --fix-broken
然后,如果看起来问题已经解决,请尝试完成升级:
sudo apt dist-upgrade 这可能或可能不是必需的,这取决于有多少被阻止以及sudo apt install --fix-missing需要执行的操作,所以如果sudo apt dist-upgrade在此处没有做太多事情,不要担心。
然后,我建议您删除作为不再安装的软件包的依赖项安装的软件包(如果升级程序已经完成升级,则涵盖了许多升级程序工具将提供删除的过时软件包):
sudo apt --purge autoremove 然后重新启动。如果升级问题已解决,则您现在使用的是18.04 LTS系统。运行sudo apt update,然后运行sudo apt upgrade。如果两者都没有出现错误,并且像Firefox和LibreOffice这样的程序可以正常工作,那么系统可能是正常的。
我认为发行升级过程不会尝试将系统回滚到开始时的版本,当在安装软件包后出现错误并运行dpkg --configure -a来尝试修复它们时。但是,您可能希望检查/etc/apt/sources.list的内容是否为18.04 LTS的代号bionic,并且lsb_release -a的输出是否一致。
如果没有错误,则升级完成安装软件包。然后它会提供删除过时软件包的选项,与上述第9步相同。
要完成升级到18.04 LTS,需要重新启动系统。如上述第10步所示,通过点击“立即重启”来执行此操作。
18.04 LTS到19.04
18.04 LTS和19.04都是受支持的版本,它们之间的版本18.10已经到了终止生命周期(EOL)。因此,升级18.04 LTS是一个正常的升级,从一个受支持的版本升级到下一个仍然受支持的版本。
只有一件特殊的事情可能需要您做才能使其正常工作。尽管如guiverc所说,17.04不是LTS版本,17.10也不是,但升级到18.04 LTS可能会设置您的Ubuntu系统,以便仅提供升级到后续的LTS版本。
18. 运行软件更新器。如果它提供升级到19.04的选项,就选择那个选项。
否则,只有两个命令按钮可用:设置...和确定。
19. 点击“设置...”按钮。这将打开“软件和更新”首选项。如果“更新”选项卡不是当前选项卡,请点击它。
20. 在底部附近,找到“通知我新的Ubuntu版本:”下拉菜单,将选择改为“任何新版本”。
21. 点击“关闭”按钮。
这将显示一个通常在更改“软件和更新”设置后出现的对话框:
信息已过时
要安装来自新添加或更改源的软件和更新,您需要重新加载有关可用软件的信息。
继续操作需要一个正常工作的互联网连接。
22. 点击“重新加载”按钮。
23. 再次运行软件升级器。
这一次,它会提供升级到19.04的选项。
它还显示了一个之前没有出现的“升级...”按钮。点击该按钮。
24. 它将向您展示19.04的发布说明。
点击“升级”。
25. 一旦您完成了这些步骤,第三次升级很可能(尽管当然不确定)会顺利进行。
我不会列出具体步骤,因为与前两次升级不同,这次升级并没有什么特别之处,也没有需要特别注意的事项。
26. 假设升级成功,请启动并尝试新的19.04系统。
这怎么可能,为什么有必要呢?
这个问题之所以有趣,是由于两个相关因素的结合:
17.04和17.10都已经到了end-of-life,而17.04已经过去了一段时间。它们的软件库(提供单独的软件包)以及升级工具(尤其是17.10的工具)都已经被移到了old-releases服务器上。
它们不是LTS版本。从一个LTS版本升级到后续的LTS版本,并跳过中间的版本,是得到很好支持的,但在这里并不适用。而且,因为它们不是LTS版本,它们甚至没有来自Canonical的ESM支持,所以不应该再期望它们有太多基础设施支持。
通常有人说Ubuntu只支持从一个版本升级到下一个版本,以及从LTS版本升级到下一个LTS版本。这些情况是支持的,但还有另一种情况:当中间版本不再得到支持时,也可以升级从一个支持的版本到下一个支持的版本。
我发现即使在一些不再支持的版本上也可以这样操作--尽管通常发生在最近才到达EOL(终止支持)的情况下--所以我希望软件更新器或者do-release-upgrade工具能够直接将17.04升级到18.04 LTS版本。并且在我将17.04切换到old-releases仓库后,它确实提供了从17.04直接升级到18.04 LTS版本的选项。
Ubuntu 17.04已不再提供软件更新。为了保持安全,您应该升级到Ubuntu 18.04.2 LTS。
但是当我点击升级...并尝试进行升级时,它下载了18.04 LTS的升级工具,并运行了它,然后工具报告称不支持从17.04升级:
无法升级 该工具不支持从'zesty'升级到'bionic'。
使用do-release-upgrade命令尝试升级产生了相同的错误,手动下载、解压和运行bionic升级工具也是如此。

我曾考虑过,甚至尝试了一种类似Debian的升级过程,该过程从手动编辑/etc/apt/sources.list开始,将其指向目标版本。我实际上成功地通过这种方式从17.04升级到了18.04 LTS,但是出现了很多问题,我不得不修复。此外,这种方法从来都不是升级到新版Ubuntu的官方支持方式。除非升级到尚未发布且无法使用do-release-upgrade -d(大多数人都不会想要这样做)的早期开发版本的Ubuntu,我不建议使用这种方法。我在这里仅仅为了完整性而提及。

致谢


Ubuntu 17.04于2017年4月发布,应该已经升级到17.10,然后是18.04,因为它是非LTS版本,预计在9个月的时间窗口内进行升级。
Ubuntu 17.04还使用了Unity 7,现已被GNOME取代成为默认桌面环境。我建议重新安装系统,但请参考https://help.ubuntu.com/community/EOLUpgrades获取关于终止支持升级的信息。
如果你使用的是一台较旧的笔记本电脑,你没有提供任何详细信息,但GNOME可能不适合它(比你之前使用的桌面环境更重),选择其他版本可能更适合你(对我来说确实如此!)如果你不喜欢每6-9个月进行升级,请使用LTS版本。
在你的情况下,我建议你下载Ubuntu 19.04(或者你喜欢的其他版本),将其写入媒体并备份你的系统。使用"something-else"选项安装新系统时,选择覆盖现有系统(我建议不要格式化)。这样做会记录你添加的应用程序,清除系统目录(不会触及$HOME目录),安装新系统,并重新添加你在软件仓库中添加的额外程序。然后系统会要求重启。这个方法只适用于"something-else"选项中的"no-format"选项。这是我会选择的方法,比EOL升级更快捷。
另外,请注意,Ubuntu 17.04不是LTS版本,所以已经到了它的生命周期终点。只有每个偶数年的第一个发布版本(6.06、8.04、10.04、12.04、14.04、16.04、18.04和明年的20.04)才是长期支持版本。如果你阅读了17.04的发行说明(https://wiki.ubuntu.com/ZestyZapus/ReleaseNotes),你就会知道这一点。
"Ubuntu 17.04将在2018年1月之前获得支持,为期9个月。如果您需要长期支持,请使用Ubuntu 16.04 LTS代替。
在安装之前,阅读发行说明非常值得,因为它们包含了注意事项,偶尔可能出现的问题(以及解决这些问题的修复和解决方法),以及如果您考虑使用该版本时有价值的信息。
注意:6.06是一个例外情况,该版本于2006年6月发布(而不是4月),自那时起,所有首次发布都在4月即“.04”月份。"