推奨configureオプション最新版
MySQL 5.0系向けです。MySQL 5.0.46をベースにしてます。
CC=gcc CXX=gcc ./configure \ --prefix=/usr/local/mysql \ --localstatedir=/usr/local/mysql/data \ --libexecdir=/usr/local/mysql/bin \ --enable-thread-safe-client \ --enable-local-infile \ --enable-assembler \ --with-pic \ --with-fast-mutexes \ --with-client-ldflags=-static \ --with-mysqld-ldflags=-static \ --with-zlib-dir=bundled \ --with-big-tables \ --with-yassl \ --with-readline \ --with-archive-storage-engine \ --with-blackhole-storage-engine \ --with-csv-storage-engine \ --with-example-storage-engine \ --with-federated-storage-engine \ --with-innodb \ --with-extra-charsets=complex \ --with-senna --with-mecab
各種ストレージエンジンのOn/Offは好みでいいと思う。mecabを外したい人は--with-mecabなしで。
以下、ポイント。
--with-readline
これを付けましょう。そうすることでバンドル版のGNU readlineが使用されます。あるいは--without-readlineでもいいです。その場合はシステムのGNU readlineが使用されます。要するに、GNU readlineが使用されるようにするのがポイントです。
やってはいけないのは、--with-readline/--without-readlineのどちらも付けないやり方(デフォルトでは--with-libeditが付けられたと解釈される)。そうするとバンドル版のeditlineが使用されることになり、できあがったmysqlコマンドラインクライアントでの日本語(マルチバイト文字)の入力ができなくなります。
--with-client-ldflags=-staticと--with-mysqld-ldflags=-static
これをつけることで、libsennaがmysqldとかのバイナリに埋めこまれるようになります。
追記:libsenna.aを使用してmysqldバイナリの中にsennaを組み込んでしまうためには、Sennaのconfigure時にLDFLAGS=-staticを付与しておく必要があります。そうでないと、libsenna.soにリンクする形でmysqldができあがってしまうようです(確認中)。
LDFLAGS=-static ./configure --prefix=/usr && make && sudo make install
ldd mysqldしてみると違いが解ります。
そうすることで、ビルドして別の場所へ持って行って動かそうとした場合に、libsennaがそのマシン上にインストールされていなくとも動作可能になりますし、何よりmysqldがsigsegvとかで落ちてしまった場合の障害解析がやりやすくなります(mysqldがsigsegv時に出力する16進数のstack traceとmysqldのシンボル情報を突き合わせることで-g無しビルドでも関数の呼出スタックと落ちた個所が分かる)。
これまでMySQLにSennaを組み込めたかどうかをldd mysqldで確認していた人はその方法が使えなくなるので、代わりに"strings mysqld | grep sen"とかで確認するといいかも。
CC=gcc CXX=gcc
あと厳密にはconfigureオプションというよりもMakefileに渡す情報かもですが、これもやっておきましょう。ldd mysqldをしてみると違いが解りますが、C++系のライブラリ依存が減ります。
make installの代わりにmake bin-dist
configureとmakeが終わったら、sudo make installではなくてmake bin-distをやることをオススメします。
make bin-distは、ソースディレクトリ内にバイナリパッケージ(tarball)を作ってくれます。make installするよりもそのtarballを好きな場所で展開して使う方がおすすめです。ここでは細かい説明は省きますが、make bin-distは単にtarball化するだけでなく、スクリプトの配置変えや一部編集なども行っており、そうすることでMySQL公式バイナリにより一層近いバイナリパッケージを得ることができます。
追記:ただし、make bin-distはmysqldバイナリに対してstripなども行っており、-g付きビルドなどを行っていたとしてもmysqldからシンボル情報が切り捨てられます(stripした方が速いので)。デバッガを使いたい人はmake bin-distではなくmake installを引き続き利用する必要があるかと思います。