dovecot 2.3.15 + mariadb 10.5 で libmysqlclient not found

devel も全部導入したのに?

(略)
| /* end confdefs.h.  */
| 
| /* Override any GCC internal prototype to avoid an error.
|    Use char because int might match the return type of a GCC
|    builtin and then its argument prototype would still apply.  */
| #ifdef __cplusplus
| extern "C"
| #endif
| char mysql_init ();
| int
| main ()
| {
| return mysql_init ();
|   ;
|   return 0;
| }
configure:26393: result: no
configure:26527: error: Can't build with MySQL support: libmysqlclient not found

Can’t build with MySQL support: libmysqlclient not found

もうこれトラウマになる位、昔から悩まされてきました。yumやパッケージを使うのが嫌でコンパイルして導入すると、だいたい mysql_init を参照した時にコレで悩まれてしまいます。64bit化になった時は、–with-libdir=lib64 が無いと死ぬとか。しかし最近はパッケージやら何やらも進み、見なくなったと思ってせいせいしていたのですが…

令和の世に現れた、libmysqlclient not found
事の発端は CentOS 7 + postfix 3.4 + dovecot 2.3.15 をコンパイルしようとしていました。mysqlよりmariadbだろうと思ったのが運のツキ。公式ページ通りに、MariaDB-server, MariaDB-client, MariaDB-devel と導入して動作も確認し、問題無くクリア。postfix 3.4 はすんなりインストールし、postfixadmin も動作。mailコマンドでテストメール、送信OK、よしよし。じゃあ次はdovecotだ…でハマりました。

あるんですよ、libmysqlclient

# ldconfig -p | grep mysql
        libmysqlclient_r.so.16 (libc6,x86-64) => /usr/lib64/libmysqlclient_r.so.16
        libmysqlclient_r.so.15 (libc6,x86-64) => /usr/lib64/libmysqlclient_r.so.15
        libmysqlclient.so.18 (libc6,x86-64) => /usr/lib64/libmysqlclient.so.18
        libmysqlclient.so.16 (libc6,x86-64) => /usr/lib64/libmysqlclient.so.16
        libmysqlclient.so.15 (libc6,x86-64) => /usr/lib64/libmysqlclient.so.15
        libmysqlclient.so (libc6,x86-64) => /usr/lib64/libmysqlclient.so

ライブラリ不足を疑って ldconfig や /usr/lib64 を確認してもある。パスなんかも確認して問題無いのに、mysql_init でコケる。ネットで様々な情報を探ると mysql 8.0 系で同様のトラブルが?とあったものの参考にならず。

簡単な解決方法

もうにっちもさっちもいかなくなってお手上げ状態。仕方ないので、いっそMariaDB関連のモン全部ぶち込んでみよと思い実行。

# yum install MariaDB-*
(略)
# rpm -qa | grep Maria
MariaDB-common-10.5.11-1.el7.centos.x86_64
MariaDB-connect-engine-10.5.11-1.el7.centos.x86_64
MariaDB-gssapi-server-10.5.11-1.el7.centos.x86_64
MariaDB-oqgraph-engine-debuginfo-10.5.11-1.el7.centos.x86_64
MariaDB-cracklib-password-check-10.5.11-1.el7.centos.x86_64
MariaDB-cracklib-password-check-debuginfo-10.5.11-1.el7.centos.x86_64
MariaDB-common-debuginfo-10.5.11-1.el7.centos.x86_64
MariaDB-shared-10.5.11-1.el7.centos.x86_64
MariaDB-oqgraph-engine-10.5.11-1.el7.centos.x86_64
MariaDB-s3-engine-debuginfo-10.5.11-1.el7.centos.x86_64
MariaDB-gssapi-server-debuginfo-10.5.11-1.el7.centos.x86_64
MariaDB-compat-10.5.11-1.el7.centos.x86_64
MariaDB-devel-10.5.11-1.el7.centos.x86_64
MariaDB-columnstore-engine-10.5.11_5.5.2-1.el7.centos.x86_64
MariaDB-test-debuginfo-10.5.11-1.el7.centos.x86_64
MariaDB-client-debuginfo-10.5.11-1.el7.centos.x86_64
MariaDB-s3-engine-10.5.11-1.el7.centos.x86_64
MariaDB-rocksdb-engine-debuginfo-10.5.11-1.el7.centos.x86_64
MariaDB-columnstore-engine-debuginfo-10.5.11_5.5.2-1.el7.centos.x86_64
MariaDB-client-10.5.11-1.el7.centos.x86_64
MariaDB-backup-10.5.11-1.el7.centos.x86_64
MariaDB-test-10.5.11-1.el7.centos.x86_64
MariaDB-shared-debuginfo-10.5.11-1.el7.centos.x86_64
MariaDB-rocksdb-engine-10.5.11-1.el7.centos.x86_64
MariaDB-backup-debuginfo-10.5.11-1.el7.centos.x86_64
MariaDB-server-debuginfo-10.5.11-1.el7.centos.x86_64
MariaDB-server-10.5.11-1.el7.centos.x86_64
MariaDB-devel-debuginfo-10.5.11-1.el7.centos.x86_64
MariaDB-connect-engine-debuginfo-10.5.11-1.el7.centos.x86_64

はっはー、今やこんなに沢山のrpmがあるんですな、s3-engineとか。もうオジサンついていけませんわ…よし、とりあえずこれでコンパイル通してダメなら捨てよーと、適当なオプションつけて .configure 実行。

# ./configure --prefix=/usr --sysconfdir=/etc --with-mysql
(略)
Install prefix . : /usr
File offsets ... : 64bit
I/O polling .... : epoll
I/O notifys .... : inotify
SSL ............ : yes (OpenSSL)
GSSAPI ......... : no
passdbs ........ : static passwd passwd-file shadow checkpassword sql
                 : -pam -bsdauth -ldap
userdbs ........ : static prefetch passwd passwd-file checkpassword sql
                 : -ldap
CFLAGS ......... : -std=gnu99 -g -O2 -fstack-protector-strong -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -mfunction-return=keep -mindirect-branch=keep -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime -Wstrict-aliasing=2
SYSTEMD ........ : simple - /usr/lib/systemd/system/dovecot.service
SQL drivers .... : mysql
                 : -pgsql -sqlite -cassandra
Full text search : squat
                 : -lucene -solr

通るやん…
たぶん、昔のように devel 導入すれば全て解決、という訳でも無くライブラリもパッケージ単位で細分化されたんでしょうね、きっと。……ああ、無駄に時間食った…細かく調べれば必要なパッケージも選定できるでしょうが、時間無いのでこのまま進めます。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください