Q4Mをソースからインストールしてみたメモ

mysql5.1もようやくStableになったことですし、うれしいので話題のQ4Mをインストールしてみました。

今回はソースからコンパイルしてみました。
以下、その際のインストールメモです。


今回インストールするのは各々このバージョンです。

* mysql-5.1.30.tar.gz
* q4m-0.8.3.tar.gz

mysqlのインストール

まずは mysql-5.1.30 です。適当にコンパイルしてください。
configreに渡すオプションは用途によって色々代わると思いますが、今回はこんなパラメータでconfigureしました。

$ ./configure \
--prefix=/usr/local/mysql \
--libexecdir=/usr/local/mysql/bin \
--sbindir=/usr/local/mysql/sbin \
--with-charset=utf8 \
--with-extra-charsets=all \
--without-readline \
--enable-thread-safe-client \
--enable-local-infile \
--with-berkley-db \
--with-innodb \
--with-federated-storage-engine \
--with-archive-storage-engine \
--with-csv-storage-engine \
--with-blackhole-storage-engine \
--with-fast-mutexes \
--with-example-storage-engine

あとはmake & make install。
できあがったら初期化します。

$ make
# make install

# /usr/local/mysql/bin/mysql_install_db -u mysql

インストールが終わったらrootにパスワード振ったり作業用のアカウント作ったりと、いろいろ環境整備があると思いますが、そこは割愛します。

Q4Mのインストール

次はいよいよQ4Mです。

./configure --with-mysql=/home/hoge/mysql-5.1.30 --prefix=/usr/local/mysql

with-mysqlで指定してるのは先ほどインストールしたmysql5.1.30のディレクトリのパスです。

はまりどころ

このwith-mysqlで指定したパスですが、ここは絶対パスで書かねばなりません
私は ~/mysql-5.1.30 と書いてしまって、しばらく何度もmake でこけてしまっていました。(これってアタリマエか?)

あともう1点はまりどころがありました。
q4mのconfigureは必ずコンパイル作業をしたmysql-5.1.30のディレクトを指定してください。
落としてきたままのきれいな状態のものだとmy_conf.hがないよといってオコラれてしまいます。

さてさてmakeしてみます。たぶん通るはずです。

ところが!make testがとおらない。。

これは単純にperlモジュールがいくつか入っていなかったからです。

今回試した環境では、perlもソースからインストールしたばかりのきれいな状態のものだったので、DBIとDBD::mysqlがはいってなかったんですね。
なのでCPANシェルからインストールします。

余談ですが、DBD::mysqlはmake testのときにデフォルトでrootユーザを使うので、rootにパスワードをふってあるとmake testでコケマス。
なのでちょっと面倒ですが手動でperl Makefile.PL --testuser=xxx みたいな指定しないとだめなのでちょっと注意が必要です。

あとついでにData::CompareとList::MoreUtisもCPANシェルからインストールしておきましょう。あとでq4mのmake testで必要になります。

必要なCPANモジュールもはいったところでインストールしてみましょう。

sudo make install
mysql -u root -p < support-files/install.sql

さてさて、インストールができたらrun-test.plを叩いてインストール後テストを実施してみます。
長々とテストがはじまりますyo。

./run_tests.pl
t/01-base-rnd_pos.........................ok
t/01-base.................................ok
t/02-queue-cond...........................ok
t/02-queue-owned-delete...................ok
t/02-queue................................ok
t/03-queue-error-wait.....................ok
t/03-queue-error..........................ok
t/04-blob-cond............................ok
t/04-blob.................................ok
t/05-multireader..........................1/4

Multireader benchmark result:
    Number of messages: 6400
    Number of readers:  32
    Elapsed:            0.206 seconds
    Throughput:         31054.973 mess./sec.

t/05-multireader..........................ok
t/05-multirw..............................1/4

Multi-reader-writer benchmark result:
    Number of messages: 6400
    Number of readers:  32
    Elapsed:            0.304 seconds
    Throughput:         21028.972 mess./sec.

t/05-multirw..............................ok
t/05-multiwait............................1/4

Multi-reader-writer benchmark result under semi-starvation:
    Number of messages: 6400
    Number of readers:  32
    Elapsed:            0.489 seconds
    Throughput:         13096.962 mess./sec.

t/05-multiwait............................ok
t/06-multi................................ok
t/07-trans................................ok
t/08-forward..............................ok
t/09-pqueue-single-table-wake-listener....ok
t/09-pqueue-single-table..................ok
All tests successful.
Files=17, Tests=68921, 167 wallclock secs ( 8.86 usr  0.53 sys + 105.01 cusr  4.93 csys = 119.33 CPU)
Result: PASS


お、成功した。


mysql にログインして確認してみます。

mysql> show plugins;
+------------+--------+----------------+--------------------+---------+
| Name       | Status | Type           | Library            | License |
+------------+--------+----------------+--------------------+---------+
| binlog     | ACTIVE | STORAGE ENGINE | NULL               | GPL     |
| ARCHIVE    | ACTIVE | STORAGE ENGINE | NULL               | GPL     |
| BLACKHOLE  | ACTIVE | STORAGE ENGINE | NULL               | GPL     |
| CSV        | ACTIVE | STORAGE ENGINE | NULL               | GPL     |
| MEMORY     | ACTIVE | STORAGE ENGINE | NULL               | GPL     |
| InnoDB     | ACTIVE | STORAGE ENGINE | NULL               | GPL     |
| MyISAM     | ACTIVE | STORAGE ENGINE | NULL               | GPL     |
| MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL               | GPL     |
| QUEUE      | ACTIVE | STORAGE ENGINE | libqueue_engine.so | GPL     |
+------------+--------+----------------+--------------------+---------+
9 rows in set (0.00 sec)

QUEUEってストレージエンジンができあがりました!

めでたしめでたし。