Ubuntu22.04安装MySQL5.7依赖包缺失常见原因解析
Ubuntu22 04系统由于移除了libtinfo5、libssl1 1、libncurses5等旧版本库,导致MySQL5 7无法安装或启动,因为依赖缺失。用户必须手动添加universe软件源,然后安装这些缺失的库,再按照mysql-common、mysql-client、mysql-server的顺序安装MySQL5 7的deb包,否则安装或启动过程
直接给出结论: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 http://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 很可能在启动阶段直接崩溃,而非在安装阶段报错。这一点尤其容易被忽略,需要特别警惕。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
SQL中HAVING子句性能有时优于WHERE子句的深度原因解析
先抛个结论,帮大家省点纠结的时间:HA VING 真的从来就不比 WHERE 性能更好。江湖上流传的“HA VING 更快”,大多是拿错了对比样本,或者是被缓存、数据量这些小细节晃了一下眼。问题的根源其实就一句话:混淆了“执行阶段”和“数据量”这两个完全不同的概念。把它们的先后顺序和各自能干的事儿理
SQL开窗函数计算分组内占比的详细教程
开窗函数这个话题,其实最核心的价值就在于它能让我们在保留全部明细数据的同时,完成复杂的聚合计算。比如,要算每个产品在其所在分类中的销售占比,这在报表分析里太常用了。如果用传统GROUP BY再加JOIN回去,SQL写得啰嗦不说,性能也糟糕。 计算分组内占比的核心逻辑 说白了就是:用当前行的值,除以它
移动端App接口Token未校验导致SQL注入的解决方案
先纠正一个常见误解:Token未校验本身并不会直接导致SQL注入——它只是一个身份凭证,不是SQL的输入源。真正的问题出在另外一条链路上:攻击者利用未校验的Token轻松绕过鉴权,然后塞进恶意参数(比如 user_id、keyword),这些参数再被拼接到SQL中执行,这才是灾难的开端。 所以修复的
Navicat还原后中文字符显示问号的解决方法
说实话,遇到Navicat还原后中文字符全部变成问号的情况,大多数用户的第一反应往往是备份文件损坏了。但真相其实很简单——问题不在文件本身,而是Navicat在还原过程中跳过了字符集协商环节,直接将utf8mb4的字节按照latin1或gbk编码“硬解”写入。换句话说,它根本没有询问数据库“你使用的
Redis集群从节点频繁掉线检查MTU与心跳包大小
揭示一个容易被忽视的问题:Redis集群中从节点频繁掉线,绝大多数情况并非配置错误,而是网络层默默出现丢包——尤其是MTU参数不匹配时,心跳包被迫分片甚至直接被截断。 先说核心判断:MTU不一致确实会导致Redis从节点掉线,这听起来有些反直觉,但却是真实的线上踩坑经验。心跳包(PING PONG)
- 热门数据榜
相关攻略
2026-07-11 07:02
2026-07-11 07:01
2026-07-11 07:01
2026-07-11 07:01
2026-07-11 07:01
2026-07-11 07:01
2026-07-11 07:01
2026-07-11 07:01
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

