2015年12月2日水曜日

MySQL Routerつらくない(自前ビルド時のcmakeエラー編)

この記事は MySQL Fabric&Routerつらくない Advent Calendar 2015 の2日目です。

昨日 はしゃらっと流したcmakeした時のエラーについていくつか。


Could not find MySQL librariesと言われるけど、mysql-community-libsだけじゃなくてmysql-community-develも要求してくる


$ rpm -q mysql-community-libs
mysql-community-libs-5.7.9-1.el6.x86_64

$ cmake .
..
CMake Error at cmake/FindMySQL.cmake:105 (message):
  Could not find MySQL libraries; used
  /root/mysql-router-2.0.2/../mysql-server/lib;/usr/local/mysql/lib;/usr/local/mysql/lib;/usr/local/lib;/usr/lib/x86_64-linux-gnu;/usr/lib/i386-linux-gnu;/usr/lib64;/usr/lib
..

$ sudo yum install -y mysql-community-devel
$ cmake .
..
-- Found MySQL Libraries 5.7.9; using /usr/lib64/mysql/libmysqlclient.so
..

しかもエラーメッセージに含んでるディレクトリー群がlib系のディレクトリーだから 憎い つらくない。


Doxygenはなくても動く


$ cmake .
..
CMake Warning at mysql_harness/cmake/Docs.cmake:27 (message):
  Doxygen not found, no documentation target will be created
..

コールスタック出すから必須なのかと思ったけど、よく見たら"CMake Warning"だった。


デフォルトではインストールされるディレクトリがMySQLっぽくない


$ sudo make install
..
-- Install configuration: ""
-- Up-to-date: /usr/local/include/mysql/mysqlrouter/config_parser.h
-- Up-to-date: /usr/local/include/mysql/mysqlrouter/plugin.h
-- Up-to-date: /usr/local/include/mysql/mysqlrouter/filesystem.h
-- Up-to-date: /usr/local/include/mysql/mysqlrouter/loader.h
-- Up-to-date: /usr/local/lib/libmysqlharness.a
-- Up-to-date: /usr/local/lib/libmysqlharness.so.0
-- Up-to-date: /usr/local/lib/libmysqlharness.so
-- Up-to-date: /usr/local/lib/mysqlrouter/logger.so
-- Up-to-date: /usr/local/include/mysql/mysqlrouter/logger.h
-- Up-to-date: /usr/local/lib/mysqlrouter/keepalive.so
-- Up-to-date: /usr/local/lib/mysqlrouter/fabric_cache.so
-- Up-to-date: /usr/local/include/mysql/mysqlrouter/fabric_cache.h
-- Up-to-date: /usr/local/lib/mysqlrouter/routing.so
-- Up-to-date: /usr/local/include/mysql/mysqlrouter/routing.h
-- Up-to-date: /usr/local/share/doc/mysqlrouter/README.txt
-- Up-to-date: /usr/local/share/doc/mysqlrouter/License.txt
-- Up-to-date: /usr/local/share/doc/mysqlrouter/sample_mysqlrouter.ini
-- Up-to-date: /usr/local/share/doc/mysqlrouter/sample_mysqlrouter.init
-- Up-to-date: /usr/local/include/mysql/mysqlrouter/datatypes.h
-- Up-to-date: /usr/local/include/mysql/mysqlrouter/utils.h
-- Up-to-date: /usr/local/include/mysql/mysqlrouter/plugin_config.h
-- Installing: //var
-- Installing: //var/local
-- Installing: //var/local/mysqlrouter
-- Installing: //var/local/mysqlrouter/log
-- Installing: //var
-- Installing: //var/local
-- Installing: //var/local/mysqlrouter
-- Installing: //var/local/mysqlrouter/run
-- Installing: /usr/local/etc
-- Installing: /usr/local/etc/mysqlrouter
-- Up-to-date: /usr/local/bin/mysqlrouter
-- Up-to-date: /usr/local/lib/libmysqlrouter.so.1
-- Up-to-date: /usr/local/lib/libmysqlrouter.so

MySQL Community Serverは/usr/local/mysqlが全てのベースになってたけど、フツーのアプリケーションっぽく配置される。

* ライブラリー: /usr/local/lib
* ヘッダーファイル: /usr/local/include
* コンフィグ: /usr/local/etc
* ログとか: /var/local/mysqlrouter

うーん、/var/local/mysqlrouterは新しい。rpmだとどうなってるんだろ。


基本的にCentOS(なり、RHEL系は)7向け


MySQL :: Download MySQL Router

* まず、rpmは"Red Hat Enterprise Linux 7 / Oracle Linux 7"向けしかない。
* バイナリーの.tar.gzも"Linux - Generic (glibc 2.17)"なので、CentOS 6.xで動かすにはglibcを更新しないといけない。
* というか、RHEL 7系用のMySQL Toolsリポジトリー(Workbenchとか入ってるとこ)の中にはmysql-routerがある。6系用のリポジトリーにはない。

$ curl -s http://repo.mysql.com/yum/mysql-tools-community/el/7/x86_64 | grep router
[FILE] mysql-router-2.0.2-1.el7.x86_6..> 23-Oct-2015 06:36   1.0M
[FILE] mysql-router-debuginfo-2.0.2-1..> 23-Oct-2015 06:36   2.4M

$ curl -s http://repo.mysql.com/yum/mysql-tools-community/el/6/x86_64 | grep router


ビルドしたやつはちゃんと動くけど、.tar.gzを解凍したやつはもちろん動かない。

$ wget http://dev.mysql.com/get/Downloads/MySQL-Router/mysql-router-2.0.2-linux-glibc2.17-x86-64bit.tar.gz
$ tar xf mysql-router-2.0.2-linux-glibc2.17-x86-64bit.tar.gz
$ cd mysql-router-2.0.2-linux-glibc2.17-x86-64bit
$ bin/mysqlrouter
bin/mysqlrouter: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /root/mysql-router-2.0.2-linux-glibc2.17-x86-64bit/bin/../lib/libmysqlrouter.so.1)
bin/mysqlrouter: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /root/mysql-router-2.0.2-linux-glibc2.17-x86-64bit/bin/../lib/libmysqlrouter.so.1)
bin/mysqlrouter: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /root/mysql-router-2.0.2-linux-glibc2.17-x86-64bit/bin/../lib/libmysqlrouter.so.1)
bin/mysqlrouter: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /root/mysql-router-2.0.2-linux-glibc2.17-x86-64bit/bin/../lib/libmysqlharness.so.0)
bin/mysqlrouter: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /root/mysql-router-2.0.2-linux-glibc2.17-x86-64bit/bin/../lib/libmysqlharness.so.0)

うう、CentOS 7なマシンが欲しいよう。

0 件のコメント :

コメントを投稿