直接给出结论:Ubuntu 22.04 移除了 MySQL 5.7 所必需的几个旧版运行库,特别是 libtinfo5、libssl1.1 和 libncurses5。这些库在 Ubuntu 18.04 和 20.04 中原是预置的,但升级到 22.04 后已被彻底移除。

Ubuntu 22.04 中缺失了哪些关键依赖库?
MySQL 5.7 的二进制安装包是在较旧环境下编译的,所依赖的 glibc、OpenSSL、ncurses 等版本均较为陈旧。Ubuntu 22.04 升级系统库后,直接移除了这些兼容层。具体缺失的库包括:
libtinfo5:系统中仅提供libtinfo6,但 MySQL 5.7 的二进制文件硬编码了libtinfo.so.5。libssl1.1:22.04 默认仅安装libssl3,而 MySQL 5.7 无法识别 OpenSSL 3.0 的接口。libncurses5(即libncurses.so.5):同样被libncurses6替代,但mysqld启动时一定会因此报错。libmecab2:MySQL 的部分 deb 包(如mysql-community-server)在依赖中声明了该库,而 22.04 仓库中仅有libmecab5。
使用 dpkg -i 安装失败时的典型错误信息
当你用 dpkg -i 命令安装 MySQL 5.7 的 deb 包时,会遇到的错误提示通常离不开以下几个关键词:
dpkg: error processing package mysql-community-server (--install): dependency problemserror while loading shared libraries: libtinfo.so.5: cannot open shared object fileerror while loading shared libraries: libncurses.so.5: cannot open shared object fileThe following packages ha ve unmet dependencies: mysql-server : Depends: lib...
这些错误信息已经明确指出了问题所在——并非操作步骤有误,而是系统中根本不存在这些库文件。你只需执行 apt list --installed | grep tinfo,很可能返回的结果就是空,这是最直接的证据。
为什么 apt install mysql-server=5.7* 也无法成功?
即使你添加了 MySQL 官方 APT 源并指定了版本号,Ubuntu 22.04 的 apt 包解析器也可能直接拒绝执行。通常你会遇到以下几种情况:
- 执行
sudo apt install mysql-server=5.7.*后,系统提示 “butlibssl1.1is not installable”。 - 跳过
mysql-server,只安装了mysql-client或mysql-common。 - 用
sudo apt --fix-broken install修复依赖时,卡在 “trying to overwrite …” 等文件冲突上。
问题的根源在于:APT 的默认策略禁止混用跨发行版的二进制依赖。而 MySQL 5.7 的官方 deb 包当初是为 Ubuntu 18.04 构建的,在 22.04 环境下,APT 的判定规则直接将其拦截了下来。
真正可行的依赖补齐方案
因此,不要指望 apt install 能帮你一键解决所有依赖问题。核心策略是:手动补齐缺失的底层库,并且安装顺序不能出错。
- 第一步:先添加 Ubuntu 22.04 的 universe 源。由于
libtinfo5已从 22.04 的主源中移除,需要手动拉取回来:
sudo add-apt-repository "deb https://archive.ubuntu.com/ubuntu/ jammy main universe" - 第二步:更新源之后,安装三个最关键的缺失包:
sudo apt install libtinfo5 libssl1.1 libncurses5 - 第三步:单独安装
libmecab2。如果安装 MySQL 的 deb 包时报出该依赖错误,则从 jammy 源下载 deb 文件,用dpkg -i手动安装:
sudo apt install libmecab2 - 最后:用
dpkg -i依次安装 MySQL 的mysql-common和mysql-community-server包。安装顺序切勿颠倒。
根据实际踩坑经验,如果遗漏了其中任何一个依赖库,mysqld 很可能在启动阶段直接崩溃,而非在安装阶段报错。这一点尤其容易被忽略,需要特别警惕。
