文章目录
背景
最近开发人员要求将之前的一台测试环境的服务器系统升级一下,因为原来的Ubuntu 16.04系统对一些新工具和框架的支撑受限,并且停更已久,漏洞和安全方面存在较多风险。所以计划升级到较新的Ubuntu 20.04版本。因为之前这台服务器上还部署着一些其他小应用,开发人员希望升级时保留应用数据,避免因重做系统导致数据丢失影响工作。
操作步骤
- 做好备份
在升级系统之前,一定要备份服务器上的所有重要数据。可以使用外部存储设备,如移动硬盘,或者通过网络备份到其他存储介质。防止在升级过程中出现错误无法回滚到原先的状态。
因为这里的测试服务器是搭建在虚拟化环境中,所以我直接做了一个快照。
- 更新系统状态
在升级至 Ubuntu 20.04 前,把 Ubuntu 16.04 更新到最新状态至关重要。这能修复已知漏洞,提升系统稳定性,减少升级冲突。
# 从软件源列表里获取最新的软件包信息。
# 不会真正地安装或更新软件包,只是更新本地的软件包索引。
sudo apt-get update
# 依据之前更新的软件包索引,把已安装的软件包升级到最新版本。
# 有可用的软件包更新时,会尝试更新这些软件包,但不会移除现有的软件包,也不会安装新的依赖包。
sudo apt-get upgrade -y
# 将已安装的软件包升级到最新版本。
# 可以处理因软件包升级而产生的依赖关系变化,必要时会移除旧的软件包并安装新的依赖包。
# 在进行重大的系统升级或者软件包依赖关系有较大变化时,通常会使用它。
sudo apt-get dist-upgrade
- 先执行
apt-get update
来更新软件包索引,- 接着使用
apt-get upgrade
来更新已安装的软件包,- 进行更全面的系统升级,可以再执行
apt-get dist-upgrade
。
- 安装 update-manager-core
update-manager-core
是基于 Debian 及其衍生发行版(如 Ubuntu)系统中负责管理系统更新的核心软件包。
用户可以定期使用
update-manager-core
来检查并安装系统和软件的更新,以保证系统性能和安全性。当有新的系统版本发布时,借助update-manager-core
可以安全地将系统升级到新版本。
sudo apt-get install update-manager-core
在执行该命令前,建议先运行
sudo apt-get update
来更新软件包索引,以保证安装的是最新版本的update-manager-core
。
如果系统中已经安装了
update-manager-core
,再次执行该命令会将其更新到最新版本。
- 执行系统升级命令
sudo do-release-upgrade
do-release-upgrade
是一个专门用于系统版本升级的脚本,它依赖于 update-manager-core
软件包,能自动处理系统升级过程中的各种操作,像检查新版本可用性、下载并安装更新、处理依赖关系、更新系统配置等。
执行过程中,会出现一些需要交互的操作,比如:
- 升级操作有一些风险的,让你确认是否继续升级;
- 在升级过程中,系统检测到现有的配置文件与新版本的默认配置文件存在冲突,让你选择保留当前的、使用新版本的、或者手动操作;
我在执行的时候,都是直接
y
和Enter
下来的,没什么问题。交互界面有些是直接在命令行提示,一些是有简单的图形化界面的,大同小异。
- 重启服务器,检查系统版本
升级命令执行结束,会要求进行重启。其实这个时候执行版本查看命令lsb_release -a
查看,会发现此时就已经是新版本(18.04)了。想要继续升级到20.04版本,则必须重启一下,重复执行之前的步骤进行升级。
版本查看命令输出内容如下。
kf01@webcs:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.6 LTS
Release: 20.04
Codename: focal
出现的问题及处理方法
执行过程中没出现什么大问题。
- 就是在升级过程中出现了“
Checking for a new Ubuntu release Please install all available updates for your release before upgrading.
”的问题。是因为有未升级的更新,要求在进行版本升级前,先安装当前版本的所有可用更新,就是前面的更新系统状态
那一步。刚开始图省事没有操作这里,就报错了。
总结
此次Ubuntu系统从16.04版本升级到20.04版本,全程十分顺利,未碰到任何重大问题。升级完成后,经仔细检查,系统版本准确无误,网络连接也一切正常。至于那些开发的小应用,就让他们自己查去吧,本次升级工作圆满结束,打完收工。