★失敗編★Q4MをCentOS5.3 x86_64でRPM化してセットアップを楽に!しようと思ったらはまった
成功したのは↓
Q4MをCentOS5.5 x86_64でRPM化してセットアップを楽にする - /var/log/dekaduki
もうバイナリ版をcp -pするのは嫌だ、ということでRPM化してセットアップを楽にしたい。
手順は完全にzigorou先生の↓準拠
q4m を rpm 化する with checkinstall - Yet Another Hackadelic
MySQLのsrc.rpmを取得
# cd /usr/src/redhat/SRPMS # wget http://dev.mysql.com/get/Downloads/MySQL-5.1/MySQL-community-5.1.42-0.rhel5.src.rpm/from/http://ftp.iij.ad.jp/pub/db/mysql/
rpmbuild --recompile
ここもzigorouさんの通り…
# rpmbuild --recompile --define 'community 1' /usr/src/redhat/SRPMS/MySQL-community-5.1.42-0.rhel5.src.rpm;date
と思ったらエラー
error: Failed build dependencies: gperf is needed by MySQL-community-5.1.42-0.rhel5.x86_64 readline-devel is needed by MySQL-community-5.1.42-0.rhel5.x86_64 ncurses-devel is needed by MySQL-community-5.1.42-0.rhel5.x86_64
上に対応するため下でinstall。
OSインストール時にDevelopment Toolsを入れとけば大丈夫なのかもしれない。
# yum install gperf readline-devel ncurses-devel
libtermcap-develも必要だよ、ということでinstall完了
そして改めてrpmrebuild
下記のようなエラーが流れるけど大丈夫だろうか。
hoge.cc : warning: dereferencing type-punned pointer will break strict-aliasing rules
1時間半ぐらいで完了。最新のCPU2個積んだサーバでこんだけかかるのか。
checkinstallのmake install
したいので、まずはcheckinstallを導入。
# cd /usr/local/src # wget http://asic-linux.com.mx/~izto/checkinstall/files/source/checkinstall-1.6.2.tar.gz # tar xvzf checkinstall-1.6.2.tar.gz # cd checkinstall-1.6.2 # make # make install
Q4Mをrpm化
そして本命Q4M。バージョンは最新版を使用。MySQL5.1.42を使っているのはバイナリ版が5.1.42向けに作られているので、それにあわせているため。
# cd /usr/local/src # wget http://q4m.31tools.com/dist/pre/q4m-0.9.2.tar.gz # tar xfz q4m-0.9.2.tar.gz # cd q4m-0.9.2 # ./configure --prefix=/usr --with-mysql=/usr/src/redhat/BUILD/mysql-5.1.42 略 checking for mysql source code... "/usr/src/redhat/BUILD/mysql-5.1.42" failed to lacate mysql 5.1 installation Please specify mysql 5.1 directory with --prefix option.
おっと。。。mysqlが見つからんぞということでエラー。recompileはしたけど確かにインストールはしていない。
MySQLをrpm化(rpmbulid --rpmrebuild)
標準で使ってるMySQLのrpmを入れても認識はするのだろうけど、この環境でrpm作っときましょう。
# rpmbuild --rebuild --define 'community 1' /usr/src/redhat/SRPMS/MySQL-community-5.1.42-0.rhel5.src.rpm
これでmysqlもrpm化
こちらも時間かかる。CPU使用率見ると見えている16個のうち1個がuser100%で完全に張り付いてる。
MySQLのrpm完成 install
- MySQL-client-community-5.1.42-0.rhel5.x86_64.rpm
- MySQL-shared-community-5.1.42-0.rhel5.x86_64.rpm
- MySQL-server-community-5.1.42-0.rhel5.x86_64.rpm
- MySQL-community-debuginfo-5.1.42-0.rhel5.x86_64.rpm
- MySQL-devel-community-5.1.42-0.rhel5.x86_64.rpm
- MySQL-embedded-community-5.1.42-0.rhel5.x86_64.rpm
- MySQL-test-community-5.1.42-0.rhel5.x86_64.rpm
# cd /usr/src/redhat/RPMS/x86_64 # rpm -ivh MySQL-*
改めまして Q4Mをrpm化
configureでlibdirを指定した。そうしないと/usr/lib/以下にできてcpせんといかん。
# cd /usr/local/src # cd q4m-0.9.2 # ./configure --prefix=/usr/ --with-mysql=/usr/src/redhat/BUILD/mysql-5.1.42 --libdir=/usr/lib64/mysql/plugin 略 configure: creating ./config.status config.status: creating Makefile config.status: creating src/Makefile config.status: creating t/Makefile config.status: creating src/queue_config.h config.status: executing depfiles commands 成功!
続いてcheckinstall MYSQL_LIBDIRのパスをzigorouさんとは変更する。maintainerはよしなに。
checkinstall -R --pkgname q4m --pkgversion 0.9.2 \ --pkgrelease 0.glibc23 --pkggroup Applications/Databases \ --maintainer hoge@gmail.com \ make MYSQL_LIBDIR=/usr/lib64 install
エラーでてうまくいかない。。。
make[2]: *** [libqueue_engine_la-ha_queue.lo] Error 1 make[2]: Leaving directory `/usr/local/src/q4m-0.9.2/src' make[1]: *** [all] Error 2 make[1]: Leaving directory `/usr/local/src/q4m-0.9.2/src' make: *** [all-recursive] Error 1
そしていろいろ疑うと、そもそも/usr/src/redhat/BUILD/mysql-5.1.42なんてなかった。
どこよmysql!こういう作業もしたことないので勘所がわからん。
/usr/src/debug/mysql-5.1.42にありました。
あれ、ぜんぜんうまくいかない。。。一度うまくいったのを手順として清書の意味もこめてやっているのになんだろう。時間かけすぎてもあれなので保留。
成功した後で見返すと
mysqlが見つからなかったときにrpmbuild --rebuildをやったのが原因だな。
よくわからずとりあえず打つからこういうことになる。
しかし、いい勉強になった。勉強するきっかけにもなったし、今回のはまりは良かったとしよう。