本文将介绍如何在当前时间点,将服务器版本的 Ubuntu 18.04 LTS 升级为最新的 Ubuntu 20.04 LTS,以及升级过程中的一些细节,希望能帮到跃跃欲试的 Ubuntu 同好。

将数据进行备份等操作需要自行处理,另外确保网络稳定,建议都在服务器跳板机上进行操作,更为稳妥。

当前这篇内容已经运行在 Ubuntu 20.04 LTS 系统环境中,:)

准备工作

先使用 apt update 看看有哪些内容可以升级。

接着执行 apt upgrade -y 耐心等待软件升级完毕即可。如果你最近已经更新过,则会得到类似下面的内容提示。

如果你觉得升级过程中软件源比较慢,可以尝试替换源,比如像下面这样操作。

升级过程的小麻烦们

当我们执行 do-release-upgrade 尝试进行升级的时候,可能会出现三种情况告诉我们不能够升级。

系统中还有未完全升级的软件

当你执行完毕命令后,可能会得到“Please install all available updates for your release before upgrading”的提示,这说明你其实并未将所有软件都完成升级。

你可能会好奇,我明明执行过 updateupgrade 了,为什么还会出现这种情况呢?

这里有一个很大的可能是,使用过 apt-mark 将部分软件版本锁定,需要先执行解锁操作,比如:

至于如何看到需要升级或者解锁的软件呢?

可以使用 apt update && apt list --upgradable 命令进行查询:

然后在再次执行 apt upgrade -y 即可完成所有软件升级。

但是千万别高兴太早,因为你还可能遇到接下来的事情。

解除系统升级锁定

当所有软件都升级就绪后,继续使用 do-release-upgrade 升级软件,会看到类似下面的提示。

这里因为官网尚未正式打开版本推送,所以如果要想得到版本更新,需要对 do-release-upgrade 添加命令行参数 -d,来允许获取最新的升级包。

作出升级路线选择

如果你是 Ubuntu 18.04 LTS 用户的话,此刻我们需要做出一个决定,是一个版本一个版本升级,还是直接跨版本升级,而如果是 Ubuntu 19.10 的用户则简单的多,因为不涉及跨版本问题,逐版本升级后半部分内容即可。

我们详细说说两种升级方式。

Ubuntu 18.04 逐版本升级 Ubuntu 20.04

有一句流传甚远的话叫做“步子不能迈的太大”,某些时候也可以用在软件升级这件事上。

打开 /etc/update-manager/release-upgrades 文件,我们可以看到文件说明:

Prompt=lts 修改为 Prompt=normal ,然后执行 do-release-upgrade -d,会开始第一阶段升级:

根据实际情况,我们“一路 Next”之后,在即将完成升级时,会看到下面的提示内容:

待系统重启之后,登陆系统会看到系统已经成功升级为 Ubuntu 19.10:

我们将 /etc/update-manager/release-upgrades 文件中数值修改为 Prompt=lts ,再次执行 do-release-upgrade -d 就可以开始第二阶段的升级了,操作过程和上面没有区别,一杯水的功夫,服务端再次重启,Ubuntu 20.04 LTS 就升级完毕啦。

验证完毕逐版本升级,我们试试一步到位的跨版本升级。

Ubuntu 18.04 跨版本升级 Ubuntu 20.04

跨版本升级相当于是逐版本升级的“偷懒版”,偷懒当然要到极致,升级软件包也可以使用 apt full-upgrade -y 这个命令来做。

和逐版本升级不同的是,我们不再需要修改 release-upgrades 配置文件,在升级前只需要确认 /etc/update-manager/release-upgrades 文件的数值是否设置为 lts 即可。

确认数值正确后,执行 do-release-upgrade -d ,根据自己需求进行升级配置选择即可,“一路 Next” 之后,Ubuntu 20.04 就升级完毕啦。

最后

距离将所有机器升级到 18.04 刚巧一年, Ubuntu 20.04 LTS 的到来,算是一个惊喜。

一般情况下,我们使用 update, upgrade, do-release-upgrade 组合技应该就能顺畅完成升级,但是在当前时间点,官网还未完全正式提供 release 升级方案,所以就有了这篇文章。

呃,促成这篇文章还有一个原因,回家后直接睡觉忘记喂猫,被毛孩子抗议叫醒…

–EOF