典型错误包括yum/apt报conflicting requests、package conflicts或卡在Resolving Dependencies;常见于mysql-community-server与mariadb-libs冲突、多源混用、apt-key弃用导致NO_PUBKEY、libncurses.so.5缺失等,需分层排查源配置、密钥、运行库。

依赖冲突报错具体长什么样
典型错误信息是 yum 或 apt 提示类似 conflicting requests、package conflicts with installed package,或者卡在 Resolving Dependencies 阶段不动。常见于想装 mysql-community-server 却被系统自带的 mariadb-libs 挡住,或者多个 MySQL 版本源混用(比如同时启用了官方 repo 和 EPEL)。
yum 安装 MySQL 时如何清理冲突源
CentOS/RHEL 系统最常踩的坑是没关掉默认的 appstream 或 baseos 仓库里自带的 MariaDB 包,又硬加了 MySQL 官方 repo。结果 yum install mysql-community-server 直接失败。
- 先查哪些源在生效:
yum repolist enabled - 临时禁用可能冲突的源:
yum --disablerepo=appstream,baseos install mysql-community-server - 更稳妥的做法是删掉或注释掉
/etc/yum.repos.d/CentOS-Stream-AppStream.repo里相关段落,再yum clean all && yum makecache - 如果已装过
mariadb-libs,别直接yum remove——它可能被其他包依赖;改用yum swap mariadb-libs mysql-community-libs(需 yum-utils)
apt 安装 MySQL 时 apt-key 已弃用怎么办
Ubuntu 22.04+ 和 Debian 12+ 不再支持 apt-key add,但很多老教程还在教这招,导致添加 MySQL 官方 GPG 密钥后 apt update 报 NO_PUBKEY 或直接跳过源。这不是依赖冲突,但会间接引发安装失败。
- 别用
apt-key:它已被标记为 deprecated,且密钥会全局生效,容易污染 - 正确做法是把密钥存到
/usr/share/keyrings/下,例如:curl -fsSL https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 | sudo gpg --dearmor -o /usr/share/keyrings/mysql-2022.gpg - 写源文件时指定密钥路径:
deb [arch=amd64 signed-by=/usr/share/keyrings/mysql-2022.gpg] http://repo.mysql.com/apt/ubuntu/ jammy mysql-8.0 - 之后
sudo apt update才能真正识别这个源,否则apt install mysql-server会 fallback 到系统默认的 mariadb
装完启动失败,其实是 libncurses 冲突
MySQL 启动时报 error while loading shared libraries: libncurses.so.5 或 libtinfo.so.5 找不到,尤其在较新系统(如 CentOS 8+/AlmaLinux 9)上高频出现。这不是安装阶段的依赖冲突,而是运行时链接错了版本。
- 系统默认装的是
libncurses.so.6,但 MySQL 官方包编译时绑定了.so.5 - 别急着 ln -s 硬链——有安全风险,且下次更新可能崩
- 推荐方案:装兼容包,CentOS/RHEL 用
yum install ncurses-compat-libs,Ubuntu/Debian 用sudo apt install libncurses5 - 验证是否解决:
ldd $(which mysqld) | grep ncurses应该显示能找到libncurses.so.5 => /lib64/libncurses.so.5
真正麻烦的不是报错本身,而是错误信息里混着“依赖”“冲突”“密钥”“库版本”好几层问题,一上来就全堆在 yum install 这一行里。得一层层剥开看:是源没配对?密钥没认上?还是运行时缺旧版 so?漏掉任何一层,重装十次都一样失败。


















