- OS(userland): NetBSD 6.1
- kernel: NetBSD 6.1
- MariaDB: 5.5.52
準備としてpkgsrcから
cmake
ncurses
boost
をinstall しておきます。
https://downloads.mariadb.org/mariadb/5.5.59/
から
mariadb-5.5.59.tar.gzをダウンロードして展開します。
$ tar zxvf somewhere/mariadb-5.5.59.tar.gz
$ cd mariadb-5.5.59
ビルドします。
5.5.32までは問題なかったのですが、5.5.33の場合、NetBSDではバンドルされているjemallocが
悪さをしているようでmutex lockで固まってしまいます。そこでバンドルされているjemallocは利用
しないようにcmake実行時にパラメタを追加します。
5.5.49ではバンドルされているjemallocを使用した場合の動作は確認していませんが、5.5.33と同様に
システムのjemallocを利用することにします。
5.5.59では、TOKUDBのbuildにはJEMALLOCが必要なようで、TOKUDBは今回は外します。
5.5.59では、openat()を使っていてbuildは通るのですが、以下のエラーで起動できないです。
180403 10:47:40 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
180403 10:47:40 [Note] Server socket created on IP: '::'.
180403 10:47:40 [ERROR] Fatal error: Can't open and lock privilege tables: Got error 9 from storage engine
そこで、openat()を使わないように、以下のパッチを当てます
https://gist.github.com/yellowback/41a5791652b259edac5a524ff66bf7da
$ patch -s -p1 < mariadb-for-netbsd.patch
$ ./BUILD/autorun.sh
$ ./configure
$ cmake . -DWITH_JEMALLOC=no -DWITHOUT_TOKUDB=yes
$ gmake
動作しているデーモンを停止してからインストールします。デフォルトで/usr/local/mysql以下にインストールされます。今回はそのまま使います。
$ su
# /etc/rc.d/mysqld stop
# gmake install
DB用のディレクトリなどは前回作成したものを利用します。
/etc/rc.d/mysqld は以下のものを使用しています。
https://gist.github.com/yellowback/5865302
デーモンを起動して完了です。
# /etc/rc.d/mysqld start