You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 18.04 LTS升级至22.04 LTS并保留指定包的问题及升级状态验证

Ubuntu 18.04 LTS升级至22.04 LTS并保留指定包的问题及升级状态验证

嗨,我来帮你一步步梳理这个问题的解决思路和验证方法,咱们先搞定当前20.04的不完整升级,再确认状态,最后顺利升到22.04并保住MySQL 5.7。

一、先修复当前20.04的不完整升级状态

你遇到的那些“No candidate ver”错误,是因为这些包在Ubuntu 20.04的官方源里已经找不到了——比如旧的Azure内核版本、PHP7.2(20.04默认是PHP7.4)、还有旧的python包(20.04里默认用python3,python包已经被废弃)。咱们得先把这些“孤儿包”处理掉,才能继续升级:

  1. 移除那些没有候选版本的包:

    sudo apt remove libapache2-mod-php7.2 linux-image-5.4.0-1032-azure linux-image-5.4.0-1095-azure linux-modules-5.4.0-1032-azure linux-modules-5.4.0-1095-azure linux-modules-extra-5.4.0-1032-azure linux-modules-extra-5.4.0-1095-azure python
    

    执行的时候如果提示确认,直接回车就行。

  2. 修复依赖关系,确保系统没有损坏的包:

    sudo apt --fix-broken install
    
  3. 更新源并完成当前系统的所有升级:

    sudo apt update && sudo apt upgrade -y
    

二、验证系统是否真的完成了20.04的升级

光看lsb_release -a是不够的——有时候升级过程中版本文件会被提前更新,但系统组件还没完全升级。咱们得做几个更靠谱的检查:

  • 检查已安装包的发行版适配性:
    运行下面的命令,查看有没有不属于20.04(代号focal)的包:

    sudo apt list --installed | grep -v focal
    

    如果输出大量非focal的包,说明升级还没完成,得回到第一步继续修复。

  • 查看升级日志:
    检查发行版升级的详细日志,看看有没有未完成的步骤或错误:

    cat /var/log/dist-upgrade/main.log
    

    日志里会记录升级过程中的每一步,如果有失败的操作,会明确标注出来。

  • 检查内核版本:
    Ubuntu 20.04的默认内核是5.4.x系列(后期会更新到更高的稳定版),如果你的内核还是18.04的4.15.x,说明内核没升级成功:

    uname -r
    
  • 检查系统底层库版本:
    20.04的glibc版本是2.31,而18.04是2.27,这个可以验证底层系统是否真的升级了:

    ldd --version
    

三、升级到22.04 LTS并保留MySQL 5.7

要注意的是,Ubuntu 22.04的官方源里默认是MySQL 8.0,没有5.7的包,所以咱们得提前做配置,防止MySQL被自动升级,同时确保升级后还能正常运行5.7:

  1. 先备份MySQL数据!
    这一步绝对不能省,万一升级出问题,数据是最关键的:

    sudo mysqldump -u root -p --all-databases > all_databases_backup.sql
    

    执行后输入MySQL root密码,等待备份完成。

  2. 锁定MySQL 5.7的版本
    编辑apt的偏好文件,让系统优先保留5.7版本,不自动升级到8.0:

    sudo nano /etc/apt/preferences.d/mysql-5.7.pref
    

    粘贴下面的内容,然后按Ctrl+O保存,Ctrl+X退出:

    Package: mysql-server mysql-client mysql-common mysql-community-server mysql-community-client
    Pin: version 5.7.*
    Pin-Priority: 1001
    
  3. 添加MySQL官方源获取5.7包
    因为22.04官方源没有5.7,所以要添加MySQL官方的源:

    wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb
    sudo dpkg -i mysql-apt-config_0.8.22-1_all.deb
    

    安装过程中会弹出配置界面,选择MySQL Server & Cluster,然后选择5.7版本,最后确认配置即可。

  4. 更新源并开始升级到22.04

    sudo apt update
    sudo apt install update-manager-core
    sudo do-release-upgrade
    

    升级过程中如果提示是否替换配置文件(比如my.cnf),一定要选择保留当前版本,避免覆盖MySQL 5.7的配置。

  5. 升级完成后验证MySQL状态
    重启系统后,检查MySQL是否正常运行:

    sudo systemctl status mysql
    

    再登录MySQL确认数据没问题:

    mysql -u root -p
    

备注:内容来源于stack exchange,提问作者Nick gia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 11:02:57