CentOS5 にMySQL+Mecab+SennaをRPMでインストールしたときのメモ

MecabSenna、いずれもCentOS用のRPMパッケージがまだ無いので作成。
MySQLへのSennaのパッチも当てたRPMを作成する。

  • Mecabrpm作成&インストール

まず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
  • Sennarpm作成&インストール

ソースの取得

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ファイルの作成は完了。

SennaMySQLバインディング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

以上で、MySQLSennaバインディング付きの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