摘要:最新在centos下面遇到了error while loading shared libraries 问题,记录一下。

问题描述

在centos下面运行postfix服务时出现以下问题:

- Unit postfix.service has begun starting up.
3月 11 18:38:38 localhost.localdomain aliasesdb[78383]: /usr/sbin/postconf: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: N
3月 11 18:38:38 localhost.localdomain aliasesdb[78383]: /usr/bin/newaliases: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: 
3月 11 18:38:38 localhost.localdomain postfix[78394]: /usr/sbin/postfix: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No s
3月 11 18:38:38 localhost.localdomain systemd[1]: postfix.service: control process exited, code=exited status=127
3月 11 18:38:38 localhost.localdomain systemd[1]: Failed to start Postfix Mail Transport Agent.
-- Subject: Unit postfix.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit postfix.service has failed.

使用ldconfig -p | grep mysql 查看系统具有的动态链接库版本libmysqlclient.so.20,可以看出是由于postfix缺少libmysqlclient.so.18动态链接库导致的。

解决动态库缺失1.png

解决问题

首先网上找到含有这个动态库文件的rpm包

解决动态库缺失2.png

获取到rpm包后,新建一个目录,将rpm移到新目录后,运行以下命令:

rpm2cpio mariadb-libs-5.5.68-1.el7.x86_64.rpm > 1.cpio
cpio -i --make-directories < 1.cpio

libmysqlclient.so.18 会出现到新目录中。把其移动到和libmysqlclient.so.20同一个目录下即可。
移动完后运行以下命令:

ldconfig
ldconfig -p | grep mysql 

解决动态库缺失3.png

可以看到缺失的动态库加载成功。

相关附件

这里附上含有libmysqlclient.so.18的centos x64的rpm包mariadb-libs-5.5.68-1.el7.x86_64.rar

文章目录