CentOS5 にMySQL+Mecab+SennaをRPMでインストールしたときのメモ
Mecab、Senna、いずれもCentOS用のRPMパッケージがまだ無いので作成。
MySQLへのSennaのパッチも当てたRPMを作成する。
まずspecファイルのために、src.rpmの取得&インストール。Fedora Core 7用のsrc.rpmを取得。
# wget ftp://194.199.20.114/linux/fedora/extras/development/SRPMS/mecab-0.95-2.fc7.src.rpm # wget ftp://194.199.20.114/linux/fedora/extras/development/SRPMS/mecab-ipadic-2.7.0.20060707-2.fc7.src.rpm # rpm -i mecab-0.95-2.fc7.src.rpm # rpm -i mecab-ipadic-2.7.0.20060707-2.fc7.src.rpm
次に最新版のソースを取得し、そのソースを/usr/src/redhat/SOURCES 以下にコピー
# wget mecab-0.96.tar.gz # wget mecab-ipadic-2.7.0-20070801.tar.gz # cp mecab-0.96.tar.gz /usr/src/redhat/SOURCES/. # cp mecab-ipadic-2.7.0-20070801.tar.gz /usr/src/redhat/SOURCES/.
src.rpm から取得したSPECファイルを編集する。
まずはコピー。
# cd /usr/src/redhat/SPECS/ # cp mecab.spec mecab-0.96.spec # cp mecab-ipadic.spec mecab-ipadic-2.7.0-20070801.spec
vi mecab-0.96.spec で以下のように修正。
diff mecab.spec mecab-0.96.spec 1c1 < %define mainver 0.95 --- > %define mainver 0.96 <−バージョンを最新のソースに合わせる。 57c57,58 < %configure --- > %configure \ > --with-charset=utf8 <−utf8を付ける。
vi mecab-ipadic-2.7.0-20070801.spec で以下のように修正。
diff mecab-ipadic.spec mecab-ipadic-2.7.0-20070801.spec 4c4 < %define date 20060707 --- > %define date 20070801 <−ソースの値と合わせる。
rpm ファイルの作成
# cd /usr/src/redhat/SPECS/ # rpmbuild -bb mecab-0.96.spec # rpmbuild -bb mecab-ipadic-2.7.0-20070801.spec
出来上がったrpmファイルのインストール
# cd /usr/src/redhat/RPMS/i386 # rpm -ivh mecab-0.96-2.i386.rpm # rpm -ivh mecab-debuginfo-0.96-2.i386.rpm # rpm -ivh mecab-devel-0.96-2.i386.rpm # rpm -ivh mecab-ipadic-2.7.0.20070801-2.i386.rpm
ソースの取得
wget http://iij.dl.sourceforge.jp/senna/26563/senna-1.0.8.tar.gz
RPMファイルの作成
# cp senna-1.0.8.tar.gz /usr/src/redhat/SOURCES/. # # tar zxvf senna-1.0.8.tar.gz # cd senna-1.0.8 # cp senna.spec.in /usr/src/redhat/SPECS/senna.spec # cd /usr/src/redhat/SPECS/ # vi senna.spec で以下のように修正 diff senna-1.0.8/senna.spec.in senna.spec 1c1 < %define version @VERSION@ --- > %define version 1.0.8 5c5 < Name: libsenna --- > Name: senna # cd /usr/src/redhat/SPECS # rpmbuild -bb senna.spec
出来上がったsennaのインストール
# cd /usr/src/redhat/RPMS/i386 # rpm -ivh senna-1.0.8-1.i386.rpm # rpm -ivh senna-debuginfo-1.0.8-1.i386.rpm # rpm -ivh senna-devel-1.0.8-1.i386.rpm
MySQLのsrc.rpmを入手。今回は新しそうなFedoraCore7のものを使用。適当なミラーサイトから取ってきてインストール。CentOS5.0のMySQLは、5.0.22なので、5.0.22という名前で作成する。本当はCentOS用のを素直に使ったほうがよいかも。
# rpm -i mysql-5.0.45-1.fc7.src.rpm
SPECファイルの編集
# cd /usr/src/redhat/SPECS/ # cp mysql.spec mysql-senna.spec # vi mysql-senna.spec <−コピーした方を編集。
以下のように編集
# diff mysql.spec mysql-senna.spec 2c2,3 < Version: 5.0.45 --- > #Version: 5.0.45 > Version: 5.0.22 <−バージョンを修正。 12c13,14 < Source0: http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-%{version}.tar.gz --- > #Source0: http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-%{version}.tar.gz > Source0: mysql-%{version}.tar.gz <−ソースのパスを修正。 155a158,159 > --with-senna=/usr \ <−configure のオプションにこれらを追加。(重要) > --with-mecab=/usr \ 192c196 < make test --- > # make test <−テストが失敗するのでコメントアウト。
以上でSPECファイルの作成は完了。
SennaのMySQLバインディングTritonn のソースを取得して、展開、ディレクトリ名を修正、再度 tar.gz 化する。
# wget http://iij.dl.sourceforge.jp/tritonn/26391/mysql-5.0.41-tritonn-1.0.3.tar.gz # tar zxvf mysql-5.0.41-tritonn-1.0.3.tar.gz # mv mysql-5.0.41-tritonn-1.0.3 mysql-5.0.22 # tar zcvf mysql-5.0.22.tar.gz mysql-5.0.22
これを、/usr/src/redhat/SOURCES 以下にコピーし、rpmファイルを作成する。
# cp mysql-5.0.22.tar.gz /usr/src/redhat/SOURCES # cd /usr/src/redhat/SPECS # rpmbuild -bb mysql-senna.spec
作成したRPMをインストールする
# cd /usr/src/redhat/RPMS/i386 # rpm -ivh mysql-5.0.22-1.i386.rpm # rpm -ivh mysql-bench-5.0.22-1.i386.rpm # rpm -ivh mysql-debuginfo-5.0.22-1.i386.rpm # rpm -ivh mysql-devel-5.0.22-1.i386.rpm # rpm -ivh mysql-libs-5.0.22-1.i386.rpm # rpm -ivh mysql-server-5.0.22-1.i386.rpm # rpm -ivh mysql-test-5.0.22-1.i386.rpm
以上で、MySQL+Sennaバインディング付きのRPMファイルが作成完了。
- テスト
Fulltextインデックス付のテーブル作成
mysql> CREATE TABLE articles ( id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, title VARCHAR(200), body TEXT, FULLTEXT (title), FULLTEXT (body) );
テストデータの入力
mysql> INSERT INTO articles (title, body) VALUES('これは件名', 'MySQLは4.1からキャラクターセットに対して大幅に拡張されました。おかげでサーバ:UTF-8、クライアント:SHIFT_JISとかでも自動的にコード変換してくれたりもします。 が、現状ではα版のためか、対応が不十分だったりもします。 現状で使いたいという時の');
mysql> SELECT * FROM articles WHERE MATCH (title) AGAINST ('これは'); mysql> SELECT * FROM articles WHERE MATCH (body) AGAINST ('します。');
- 出来上がったCentOS5.0用のRPMは以下
http://www.rukatan.com/mecab-0.96-2.i386.rpm
http://www.rukatan.com/mecab-debuginfo-0.96-2.i386.rpm
http://www.rukatan.com/mecab-devel-0.96-2.i386.rpm
http://www.rukatan.com/mecab-ipadic-2.7.0.20070801-2.i386.rpm
http://www.rukatan.com/mysql-5.0.22-1.i386.rpm
http://www.rukatan.com/mysql-bench-5.0.22-1.i386.rpm
http://www.rukatan.com/mysql-debuginfo-5.0.22-1.i386.rpm
http://www.rukatan.com/mysql-devel-5.0.22-1.i386.rpm
http://www.rukatan.com/mysql-libs-5.0.22-1.i386.rpm
http://www.rukatan.com/mysql-server-5.0.22-1.i386.rpm
http://www.rukatan.com/mysql-test-5.0.22-1.i386.rpm
http://www.rukatan.com/senna-1.0.8-1.i386.rpm
http://www.rukatan.com/senna-debuginfo-1.0.8-1.i386.rpm
http://www.rukatan.com/senna-devel-1.0.8-1.i386.rpm