Snow Leopard に Cicindela をインストール

Snow Leopard に 汎用レコメンデーションエンジン Cicindela
インストールした時のメモ。

基本は
Google Code Archive - Long-term storage for Google Code Project Hosting.
Google Code Archive - Long-term storage for Google Code Project Hosting.
の通り。

環境

MacPorts でいろいろインストール

Apache とか MySQL が必要なのでインストール。
MAMPmod_perl が入っていないのでダメ、
XAMPP もなんかうまく行かなかったので MacPorts を推奨。

$ sudo port intall mysql5-devel
$ sudo port install apache2
$ sudo port install mod_perl2

mode_perl2 を入れると Perl 5.8 もインストールされるので注意。

$ cpan

CPAN の設定もしておく。

Cicindela のインストール

Cicindela は ~/devel/cicindela にインストールすることにした。

$ cd devel
$ svn checkout http://cicindela2.googlecode.com/svn/trunk/ cicindela

Perl スクリプト中の Perl 及び Cicindela のパスを書き換えるスクリプトを実行。

$ cd cicindela/misc
$ perl substitute_project_paths.pl --perl_path=/opt/local/bin/perl --cicindela_home=/Users/mallowlabs/devel/cicindela


Apachemod_perl というか Cicindela の設定を書き込む

$ sudo vim /opt/local/apache2/conf/httpd.conf 

末尾に 以下を追記

Include /Users/mallowlabs/devel/cicindela/etc/httpd/modperl.conf


MySQL の設定も書き込む

$ sudo cp /Users/mallowlabs/devel/cicindela/etc/mysql/my.cnf /opt/local/etc/mysql5/my.cnf


CPAN モジュールのインストール

$ sudo perl -MCPAN -e "install DBI; install DBD::mysql; install Ima::DBI; install Time::Piece; install Log::Log4perl; install Module::Pluggable; install Class::Singleton;"

この時点では DBD::mysql のインストールに失敗しているが
気づかなかったのでスルー。解決方法は後述。


ログの設定

$ cd /Users/mallowlabs/devel/cicindela/
$ touch var/logs/log.txt
$ chmod a+rw var/logs/log.txt

デモの実行

デモ用ブランチに切り替え

$ cd /Users/mallowlabs/devel/cicindela/
$ svn switch http://cicindela2.googlecode.com/svn/branches/demo_data/misc misc
$ cd misc


ここで MySQL Server を起動するとディレクトリが無いだの権限が無いだの言われるので
必要なディレクトリを作ってやる。(本番環境ではもっとちゃんとしてね)

$ sudo mkdir /opt/local/var/run
$ sudo mkdir /opt/local/var/run/mysql5
$ sudo chmod -R a+rw /opt/local/var/run/

$ sudo mkdir /opt/local/var/db/
$ sudo mkdir /opt/local/var/db/mysql5
$ sudo chmod -R a+rw /opt/local/var/db

初期化スクリプトも実行

$ sudo -u mysql mysql_install_db5


MySQL サーバーを起動

$ cd /opt/local ; sudo /opt/local/lib/mysql5/bin/mysqld_safe &


Cicindela のデモ用テーブルを作成

$ cd /Users/mallowlabs/devel/cicindela/misc
$ perl create_init_sql.pl --db_name=cicindela_clip_db | /opt/local/bin/mysql5 -uroot


データを読み込むのに CPAN モジュールが追加で必要らしいのでインストール

$ sudo perl -MCPAN -e "install Text::CSV_XS;"

いざインポート

$ cd /Users/mallowlabs/devel/cicindela/misc/clip_data/
$ gunzip -c ldclip_demo_dataset.csv.gz | head -n 10000 |  perl importer.pl  --work_dir=`pwd` | /opt/local/bin/mysql5 -uroot cicindela_clip_db

全データやると時間がかかりすぎる上に
うまくいかなかったりするのでとりあえず10000行で。


設定

$ cd /Users/mallowlabs/devel/cicindela
$ vim lib/Cicindela/Config/_common.pm 
14     ##
15     ## sample settings for ldclip_dataset
16     ##
この間をコメントアウトを外す
72     ##
73     ## sample settings for movielens dataset
74     ##
 datasource =>  [ 'dbi:mysql:cicindela_clip_db;host=localhost', 'cicindela', 'japana' ],

とかなってるところを

 datasource =>  [ 'dbi:mysql:cicindela_clip_db;host=localhost', 'root', '' ],

に書き換える。


いざ集計

$ perl bin/flush_buffers.pl

としたらエラーが出て止まる。

install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC

どうやら DBD::mysql のインストールに失敗しているらしい。
無理矢理インストールしてみる。

$ cd ~/.cpan/build/DBD-mysql-4.013-bIhj26/
$ sudo perl Makefile.PL --cflags="-I/opt/local/include/mysql5/mysql"  --libs="-L/opt/local/lib -L/opt/local/lib/mysql5/mysql -lmysqlclient -L/opt/local/lib -lz -lm -L/opt/local/lib -lssl -lcrypto" --mysql_config="/opt/local/bin/mysql_config5"
$ sudo make
$ sudo make install

DBD-mysql-4.013-ランダムな文字列 の下でオプションを指定して Makefile を作成する。


気を取り直して集計

$ perl bin/flush_buffers.pl
$ perl bin/batch.pl --track=1
$ perl bin/batch.pl --track=1


Apache 起動

$ sudo /opt/local/apache2/bin/apachectl start


ブラウザで以下の URL にアクセス
http://127.0.0.1/cicindela/recommend?op=for_item&set=clip_simple&item_id=39

37
5
131
360
36
388
3
12
278
436

とか表示されたら成功。


夢が広がりんぐですね。