RHEL系统安装MySQL时提示libmysqlclient.so.18依赖缺失报错
问题原因
RHEL 7 系统默认预装的postfix服务依赖mariadb-libs包提供的libmysqlclient.so.18()(64bit)动态库。安装MySQL 5.7社区版时,官方源里的mysql-community-libs包会默认替换系统自带的mariadb-libs,但这个包仅提供更高版本的libmysqlclient.so.20,不向下兼容老版本的so.18库,直接触发依赖冲突。
注意:不要直接加--skip-broken参数绕过检测,该参数会跳过依赖校验,大概率导致安装完成后MySQL服务启动失败、后续软件包依赖关系混乱。
解决方法
按优先级从高到低选择对应方案即可:
方案1(生产环境推荐,无副作用):先安装兼容依赖包
MySQL官方专门提供了兼容库包,补全老版本动态库支持,不会和现有系统服务产生冲突,执行顺序如下:- 先安装兼容库:
sudo yum install mysql-community-libs-compat -y - 兼容包安装完成后,再执行原服务端安装命令:
sudo yum install mysql-community-server -y
- 先安装兼容库:
方案2(无邮件服务需求场景适用):卸载冲突的postfix组件
如果你的服务器不需要postfix提供邮件发送能力,可以直接移除该组件绕开依赖限制:- 卸载postfix:
sudo yum remove postfix -y - 再执行MySQL服务端安装命令:
sudo yum install mysql-community-server -y
- 卸载postfix:
方案3(仅测试环境应急用,不推荐生产):关闭包替换规则
安装时临时关闭源的包废弃替换规则,保留原有mariadb-libs不被替换,操作命令如下:sudo yum install mysql-community-server --setopt=obsoletes=0 -y
该方案后续容易出现多版本库共存混乱问题,非必要不要用。
安装后校验
安装完成后执行以下操作确认服务正常:
- 启动MySQL服务:
sudo systemctl start mysqld - 设置开机自启:
sudo systemctl enable mysqld - 检查postfix依赖是否正常:
ldd /usr/sbin/postfix | grep libmysqlclient,命令输出正常的库文件路径即代表依赖无异常。
内容的提问来源于stack exchange,提问作者Sekhar
相关产品推荐
相关产品推荐

