Postfix 找不到 MySQL 共享库

Postfix 找不到 MySQL 共享库

我正在尝试安装支持 MySQL 的 Postfix。当我启动或运行 postfix 守护进程时,它抱怨它“找不到 libmysqlclient.so.18”,该目录位于/usr/local/mysql/lib我构建包时链接的目录中。

/usr/local/mysql/lib/libmysqlclient.so.18我在in中添加了一个符号链接/usr/lib,这解决了问题,但这是一个非常糟糕的解决方案,我宁愿以正确的方式来做。

我跟着本文档,除了那个小错误之外它可以工作。

我运行的是 Arch Linux,内核版本 2.6.33

答案1

最简单的解决方案是从 Arch Linux 软件包中安装 MySQL,然后库就会安装/usr/lib,一切都会顺利进行。

如果您在打包系统之外安装 MySQL,则/usr/local/lib是库的预期位置;在那里放置一个符号链接。我建议在从源代码安装程序时使用 stow 或 xstow 自动创建符号链接;看跟踪程序

如果您希望所有程序在 中查找库/usr/local/mysql/lib,请将其添加到 中的默认库搜索路径中/etc/ld.so.conf。但我宁愿推荐 中的符号链接(/usr/local/lib如果您想要的话)。

如果您只想让 Postfix 在 中查找库/usr/local/mysql/lib,请编辑启动 Postfix 的脚本 - 类似于/etc/rc.d/postfix(我不知道 Arch 上的确切位置)。在启动 postfix 守护进程之前,添加以下行

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH${LD_LIBRARY_PATH:+:}/usr/local/mysql/lib"

答案2

在 Arch Linux 上,我最近在从自定义构建安装库时遇到了类似的问题。就我而言,它将库安装到 /usr/local/lib 中。运行需要此库的应用程序会导致类似的运行时错误:无法找到该库。 (使用 BSD 系统不是更轻松吗?:-D)

正确的解决方案是将新的本地库目录添加到运行时链接器路径中。 在 Arch Linux 上,这似乎是:

/etc/ld.so.conf

因此要添加新的库路径,

sudo vi /etc/ld.so.conf

然后将路径附加到新行上:

/usr/local/mysql/lib/

就我而言,我的 /etc/ld.conf.so 文件现在如下所示,因为我添加了 /usr/local/lib:

#
# /etc/ld.so.conf
#

include /etc/ld.so.conf.d/*.conf
/usr/local/lib

# End of file

验证我的使用是否正确:

sudo ldconfig -v

您的自定义库应该被列出,即它们被链接器“找到”。

要获取有关此配置文件和运行时链接器的更多信息,

man ldconfig

看起来 Arch Linux 被设置为使用带有多个配置文件(/etc/ld.so.conf.d/*.conf)的自定义目录,但是这对我来说太多了 SYSV,而且完全是矫枉过正;只需将新路径添加到 /etc/ld.so.conf 即可。

相关内容