文档首页> Linux命令> 更新ubuntu18.04->20.04

更新ubuntu18.04->20.04

发布时间:2025-12-03 00:11       

思路先说清楚:18.04 已经结束标准支持,正确姿势是「一台一台稳步」从 18.04 ➜ 20.04 ➜ 22.04,而不是乱改源直接跨大版本。官方推荐用 do-release-upgrade 工具完成大版本升级。(Ubuntu)

下面给你一套可执行方案,命令+解释一步到位 ✅


一、通用准备工作(18.04 和 20.04 升级前都要做)💾

  1. 备份

    • 云服务器:做快照 / 镜像。
    • 物理机:至少备份 /etc、数据库、业务数据目录(如 /var/www)。
    • 原因:大版本升级本质上是「重装系统+迁移配置」,出问题直接回滚快照最省心。
  2. 检查磁盘与网络

    df -h
    
    • 确认根分区至少剩余 5~10GB 空间,避免下载和解压包时写满磁盘。
  3. 建议在 tmux/screen 里操作

    • 防止 SSH 断线导致升级中断。
    sudo apt install tmux -y
    tmux
    

    之后所有升级命令都在 tmux 里执行。


二、从 Ubuntu 18.04 升级到 20.04 🚀

1. 先把 18.04 自身更新到最新

sudo apt update
sudo apt full-upgrade -y
sudo apt --fix-broken install
sudo apt autoremove --purge -y
  • apt update:刷新软件包索引。
  • apt full-upgrade:把现有系统升到 18.04 最新小版本,同时处理依赖变更。
  • apt --fix-broken install:如有残缺依赖,先修好再往下走。
  • apt autoremove --purge:删除不再需要的旧包,顺便释放空间。

如果你的 18.04 很老,或者标准支持结束后改过源,记得检查源是否可用;只要 apt update 能正常跑完,就可以继续。(Ubuntu)

2. 关闭第三方源(可选但强烈推荐)

ls /etc/apt/sources.list.d/

如果有很多 PPA 或第三方源,可以先把这些文件里的内容注释掉(前面加 #),防止升级时卡在某个不兼容的仓库。

3. 确保只跟随 LTS 版本

sudo sed -i 's/^Prompt=.*/Prompt=lts/' /etc/update-manager/release-upgrades
  • 把 Prompt 设为 lts,表示只在 LTS 之间跳(18.04 ➜ 20.04,而不是中间非 LTS)。(Ubuntu)

4. 执行大版本升级到 20.04

sudo do-release-upgrade
  • 这是官方推荐的大版本升级工具,会自动:
    • 检查新版本;
    • 计算要安装/删除/替换的包;
    • 备份并合并配置文件;
    • 处理一些兼容性迁移脚本。(documentation.ubuntu.com)

过程中的提示建议这样处理:

  • 远程 SSH:如果提示「通过 SSH 升级有风险」,确认你在 tmux 里,选继续。
  • 配置文件冲突:大部分情况可以选择「保留当前版本」,有特殊定制的服务你可以再手工比对。

升级完成后会提示重启:

sudo reboot

重启后确认版本:

lsb_release -a

你应该能看到 Release: 20.04(或 20.04.x 小版本)。


三、从 Ubuntu 20.04 升级到 22.04 ✅

思路完全一样,再走一轮「先小再大」的升级流程。20.04 目前仍在标准支持期,升级路径官方保持可用。(TuxCare)

1. 先把 20.04 升到最新

sudo apt update
sudo apt full-upgrade -y
sudo apt --fix-broken install
sudo apt autoremove --purge -y

逻辑同上:先干净地跑一遍系统级更新,减少大版本升级时的冲突。

2. 再确认一次 LTS 升级策略

sudo sed -i 's/^Prompt=.*/Prompt=lts/' /etc/update-manager/release-upgrades

保证仍然是 LTS 路径(20.04 ➜ 22.04)。

3. 执行升级到 22.04

sudo do-release-upgrade

此时 do-release-upgrade 会从 20.04 直接升级到 22.04(下一代 LTS),而不会跳去更高的开发版。(Reddit)

同样,按提示一路确认,完成后重启:

sudo reboot
lsb_release -a

看到 Release: 22.04 就说明已经完成两级升级链路(18.04 ➜ 20.04 ➜ 22.04)。


四、升级后必要自检(很关键,别偷懒)🧐

  1. 检查核心服务

    • Web 服务器(Nginx/Apache)、数据库(MySQL/MariaDB)、PHP、Redis 等是否正常启动。
    • 尤其是 PHP 版本:18.04 ➜ 20.04 ➜ 22.04 过程中,PHP 可能从 7.2 ➜ 7.4 ➜ 8.1,不兼容的老框架要重点测试。
  2. 检查网络与防火墙

    sudo ss -lntp
    sudo ufw status
    
    • 确认关键端口还在监听,防火墙规则没有被意外收紧。
  3. 看系统日志

    sudo journalctl -p 3 -xb
    
    • 只看错误级别,快速扫一眼有没有明显的驱动/挂载/服务启动错误。

五、最后的建议

  • 生产环境建议先在一台非核心机器上演练完整流程,把业务检查脚本(健康检查、回归脚本)跑顺了,再在核心节点执行。
  • 如果你打算长期跑线上业务,可以考虑 22.04 作为当前主力,后面再计划 24.04 的升级周期,这样你整体环境结构就很干净,便于统一维护。(Ubuntu)

一句话总结:

先在每个版本上把系统「打满补丁」再用 do-release-upgrade 踩稳两级台阶,18.04 ➜ 20.04 ➜ 22.04,一步一步上楼,不跳楼梯,不改源硬抬,这样稳、可控、可回滚。