介绍
Ubuntu 操作系统的最新长期支持 (LTS) 版本 Ubuntu 20.04 (Focal Fossa) 于 2020 年 4 月 23 日发布。本指南将解释如何将 18.04 或更高版本的 Ubuntu 系统升级到 Ubuntu 20.04。
警告:与操作系统主要版本之间的几乎所有升级一样,此过程存在故障、数据丢失或软件配置损坏的固有风险。强烈建议进行全面备份和广泛测试。
为了避免这些问题,我们建议迁移到新的 Ubuntu 20.04 服务器而不是就地升级。升级时您可能仍需要查看软件配置的差异,但核心系统可能会具有更高的稳定性。您可以关注我们关于如何迁移到新 Linux 服务器的系列文章,以了解如何在服务器之间迁移。
先决条件
本指南假设您有一个 Ubuntu 18.04 或更高版本的系统,配置了启用 sudo 的非 root 用户。
潜在的陷阱
尽管许多系统都可以就地升级而不会发生事故,但通过从头开始安装发行版、在此过程中仔细测试配置服务以及将应用程序或用户数据作为单独的文件进行迁移,迁移到主要的新版本通常更安全、更可预测。步。
您不应该在没有首先针对临时环境中的升级测试所有部署的软件和服务的情况下升级生产系统。请记住,库、语言和系统服务可能已经发生了重大变化。在升级之前,请考虑阅读Focal Fossa 发行说明。
步骤 1 – 备份您的系统
在尝试对任何系统进行重大升级之前,您应该确保在升级出错时不会丢失数据。完成此操作的最佳方法是备份整个文件系统。否则,请确保您拥有用户主目录、任何自定义配置文件以及关系数据库等服务存储的数据的副本。
在 DigitalOcean Droplet 上,一种方法是关闭系统电源并拍摄快照(关闭电源可确保文件系统更加一致)。有关快照过程的更多详细信息,请参阅如何创建 Droplet快照。确认 Ubuntu 更新成功后,您可以删除快照,这样您就不再需要为其存储付费。
有关适用于大多数 Ubuntu 系统的备份方法,请参阅如何为您的 VPS 选择有效的备份策略。
步骤 2 – 更新当前安装的软件包
在开始版本升级之前,将当前版本的所有软件包更新到最新版本是最安全的。首先更新包列表:
- sudo apt update
接下来,将已安装的软件包升级到最新的可用版本:
- sudo apt upgrade
您将看到升级列表,并提示您继续。回答y为 yes 并按Enter。
这个过程可能需要一些时间。完成后,使用dist-upgrade
with 命令apt-get
执行任何其他升级,包括更改依赖项、根据需要添加或删除新包。这将处理一组可能被上apt upgrade
一步阻止的升级:
- sudo apt dist-upgrade
同样,在提示继续时回答y,然后等待升级完成。
现在您已经安装了最新的 Ubuntu,您可以使用do-release-upgrade
它升级到 20.04 版本。
第 3 步 – 使用 Ubuntu 的 do-release-upgrade 工具升级
传统上,Ubuntu 版本可以通过更改 Apt 的/etc/apt/sources.list
(指定包存储库)并apt-get dist-upgrade
用于执行升级本身来升级。虽然这个过程可能仍然有效,但 Ubuntu 提供了一个工具do-release-upgrade
,使升级更安全、更容易。
do-release-upgrade
处理检查新版本、更新sources.list
和一系列其他任务,并且是必须通过远程连接执行的服务器升级的官方推荐升级路径。
从do-release-upgrade
没有选项的情况下运行开始:
- sudo do-release-upgrade
如果新的 Ubuntu 版本尚未正式发布,您可能会得到以下输出:
OutputChecking for a new Ubuntu release
No new release found
请注意,在 Ubuntu Server 上,新的 LTS 版本do-release-upgrade
直到它的第一个版本才可用,在这种情况下20.04.1
。这通常是在初始发布日期之后的几个月。
如果您没有看到可用版本,请添加-d
升级到开发版本的选项:
- sudo do-release-upgrade -d
如果您通过 SSH 连接到系统,系统会询问您是否要继续。对于虚拟机或托管服务器,您应该记住,失去 SSH 连接是一种风险,特别是如果您没有其他方法远程连接到系统的控制台(例如基于 Web 的控制台功能)。
对于您控制的其他系统,请记住,只有在您可以直接物理访问机器时才执行主要操作系统升级是最安全的。
在提示符下,键入y并按Enter继续:
OutputReading cache
Checking package manager
Continue running under SSH?
This session appears to be running under ssh. It is not recommended
to perform a upgrade over ssh currently because in case of failure it
is harder to recover.
If you continue, an additional ssh daemon will be started at port
'1022'.
Do you want to continue?
Continue [yN]
接下来,您将被告知do-release-upgrade
正在sshd
端口 1022 上启动一个新实例:
OutputStarting additional sshd
To make recovery in case of failure easier, an additional sshd will
be started on port '1022'. If anything goes wrong with the running
ssh you can still connect to the additional one.
If you run a firewall, you may need to temporarily open this port. As
this is potentially dangerous it's not done automatically. You can
open the port with e.g.:
'iptables -I INPUT -p tcp --dport 1022 -j ACCEPT'
To continue please press [ENTER]
按Enter
。接下来,您可能会收到未找到镜像条目的警告。在 DigitalOcean 系统上,忽略此警告并继续升级是安全的,因为 20.04 的本地镜像实际上是可用的。输入y:
OutputUpdating repository information
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 'bionic' to 'focal' entries.
If you select 'No' the upgrade will cancel.
Continue [yN]
下载新软件包列表并计算更改后,系统会询问您是否要开始升级。再次输入y
以继续:
OutputDo you want to start the upgrade?
18 installed packages are no longer supported by Canonical. You can
still get support from the community.
3 packages are going to be removed. 142 new packages are going to be
installed. 452 packages are going to be upgraded.
You have to download a total of 338 M. This download will take about
42 minutes with a 1Mbit DSL connection and about 13 hours with a 56k
modem.
Fetching and installing the upgrade can take several hours. Once the
download has finished, the process cannot be canceled.
Continue [yN] Details [d]
现在将检索、解压缩和安装新软件包。即使您的系统处于快速连接状态,这也需要一段时间。
在安装过程中,您可能会看到各种问题的交互式对话框。例如,可能会询问您是否要在需要时自动重启服务:
在这种情况下,回答Yes是安全的。在其他情况下,可能会询问您是否要替换已修改的配置文件。这通常是一个判断调用,并且可能需要有关本教程范围之外的特定软件的知识。
新软件包安装完成后,系统会询问您是否准备好删除过时的软件包。在没有自定义配置的库存系统上,在此处输入y应该是安全的。在经过大量修改的系统上,您可能希望输入d并检查要删除的软件包列表,以防其中包含您稍后需要重新安装的任何内容。
OutputRemove obsolete packages?
53 packages are going to be removed.
Continue [yN] Details [d]
最后,假设一切顺利,您将被告知升级已完成,需要重新启动。输入y继续:
OutputSystem upgrade is complete.
Restart required
To finish the upgrade, a restart is required.
If you select 'y' the system will be restarted.
Continue [yN]
在 SSH 会话中,您可能会看到如下内容:
OutputConnection to 203.0.113.241 closed by remote host.
Connection to 203.0.113.241 closed.
您可能需要在此处按一个键才能退出本地提示,因为您的 SSH 会话将在服务器端终止。
稍等片刻,让您的服务器重新启动,然后重新连接。登录时,您应该会收到一条消息,确认您现在在 Focal Fossa 上:
OutputWelcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-29-generic x86_64)
结论
您现在应该有一个可以运行的 Ubuntu 20.04 安装。从这里开始,您可能需要调查对服务和已部署应用程序的必要配置更改。
您可以在我们的Ubuntu 20.04 教程标签页上找到更多 20.04 教程和问题。