toritonのインストールログ(長いです)。
0.前提
aptitude show gcc パッケージ: gcc 状態: インストール済み 自動的にインストールされた: no バージョン: 4:4.1.1-15 優先度: 任意 セクション: devel メンテナ: Debian GCC Maintainers <debian-gcc@lists.debian.org> 展開サイズ: 65.5k 依存: cpp (>= 4:4.1.1-15), gcc-4.1 (>= 4.1.1-2) 推奨: libc6-dev | libc-dev 提案: make, manpages-dev, autoconf, automake1.9, libtool, flex, bison, gdb, gcc-doc 競合: gcc-doc (< 1:2.95.3) 提供: c-compiler 説明: The GNU C compiler This is the GNU C compiler, a fairly portable optimizing compiler for C. This is a dependency package providing the default GNU C compiler. タグ: devel::compiler, devel::lang:c, implemented-in::c, interface::commandline, role::metapackage, special::meta, works-with::software:source
aptitude show g++ パッケージ: g++ 状態: インストール済み 自動的にインストールされた: no バージョン: 4:4.1.1-15 優先度: 任意 セクション: devel メンテナ: Debian GCC Maintainers <debian-gcc@lists.debian.org> 展開サイズ: 41.0k 依存: cpp (>= 4:4.1.1-15), gcc (>= 4:4.1.1-15), g++-4.1 (>= 4.1.1-2), gcc-4.1 (>= 4.1.1-2) 提供: c++-compiler 説明: The GNU C++ compiler This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. This is a dependency package providing the default GNU C++ compiler. タグ: devel::compiler, devel::lang:c++, implemented-in::c, interface::commandline, role::metapackage, special::meta, works-with::software:source
1.mecabのインストール
(参考:http://mecab.sourceforge.net/#download)
1.1 本体のインストール
UTF8モード専用のコンフィグオプソンをつけてインストール
wget http://nchc.dl.sourceforge.net/sourceforge/mecab/mecab-0.95.tar.gz %tar zxfv mecab-0.95.tar.gz %cd mecab-0.95/ %./configure --enable-utf8-only %make %sudo make install %which mecab /usr/local/bin/mecab
インストール成功。ただし、まだ辞書をインストールしてないので起動はできない。
%mecab tagger.cpp(138) [load_dictionary_resource(param)] param.cpp(71) [ifs] no such file or directory: /usr/local/lib/mecab/dic/ipadic/dicrc
引き続き、辞書のインストールを実行
1.2 辞書のインストール
こちらも、UTF8オンリーで実行
% http://nchc.dl.sourceforge.net/sourceforge/mecab/mecab-ipadic-2.7.0-20060707.tar.gz % tar xvzf mecab-ipadic-2.7.0-20060707.tar.gz % cd mecab-ipadic-2.7.0-20060707 % ./configure --with-charset=utf8 % make % sudo make install % mecab (コンソール入力モードになるので、日本語ですもももももも・・・と入れてENTER) すもももももももものうち すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ も 助詞,係助詞,*,*,*,*,も,モ,モ もも 名詞,一般,*,*,*,*,もも,モモ,モモ も 助詞,係助詞,*,*,*,*,も,モ,モ もも 名詞,一般,*,*,*,*,もも,モモ,モモ の 助詞,連体化,*,*,*,*,の,ノ,ノ うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ EOS (Ctrl+C)でシェルに復帰
2.sennaのインストール
参考:http://qwik.jp/senna/install.html
参考ページに乗ってるとおりにしたらうまくいきますた。
% wget http://dev.razil.jp/archive/senna/senna-latest-svn.tar.gz % tar xvfz senna-latest-svn.tar.gz % cd senna % ./configure --prefix=/usr % make % sudo make install % sudo mkdir /var/senna % sudo vi /var/senna/senna.conf
3.mysqlのインストール
インストールについては、以下を参照
http://qwik.jp/senna/install.html
% wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.37.tar.gz/from/http://mirror.mysql-partners-jp.biz/ % wget http://osdn.dl.sourceforge.jp/tritonn/24513/mysql-5.0.37.senna-1.0.2.diff % tar xvzf mysql-5.0.37.tar.gz % cd mysql-5.0.37
% patch -p1 < ../mysql-5.0.37.senna-1.0.2.diff % libtoolize -c -f Using `AC_PROG_RANLIB' is rendered obsolete by `AC_PROG_LIBTOOL' % aclocal-1.9 % autoheader % automake-1.9 -c -a -i % autoconf
インストールする上で、autoconfやautomakeなどがない場合は適宜apt-get installする。
(このlibtoolize〜autoconfの手順を忘れてて小一時間悩んだのはココだけの秘密
→忘れると、多分sennaが入らない状態のmysqlが正常にインストールされて、後ででてくる動作確認で
日本語の文字列検索ができなかった。)
.configureオプションについては、以下を参照
http://qwik.jp/senna/mysql_configure.html
% touch sql/sql_yacc.yy % CFLAGS="-O3 -mtune=nocona -I/usr/local/include" \ CXX=gcc CXXFLAGS="-O3 -mtune=nocona \ -felide-constructors -fno-exceptions -fno-rtti -I/usr/local/include" \ LDFLAGS="-L/usr/local/lib" \ ./configure \ --with-senna \ --prefix=/usr \ --enable-assembler \ --with-charset=utf8 --with-extra-charsets=complex \ --enable-thread-safe-client \ --with-big-tables \ --with-named-curses-libs=/lib/libncurses.so.5 \ --localstatedir=/var/lib/mysql \ --with-readline \ --with-unix-socket-path=/var/run/mysqld/mysqld.sock % make % sudo make install
設定ファイルのコピーとDBの初期化(すでにデータがある場合はコレやっちゃダメ)
% sudo cp /usr/share/mysql/my-large.cnf /etc/my.cnf % cd /usr/bin % sudo mysql_install_db --user=mysql
自動起動の設定
% sudo cp mysql.server /etc/init.d/mysql % sudo update-rc.d mysql defaults 99 01 Adding system startup for /etc/init.d/mysql ... /etc/rc0.d/K01mysql -> ../init.d/mysql /etc/rc1.d/K01mysql -> ../init.d/mysql /etc/rc6.d/K01mysql -> ../init.d/mysql /etc/rc2.d/S99mysql -> ../init.d/mysql /etc/rc3.d/S99mysql -> ../init.d/mysql /etc/rc4.d/S99mysql -> ../init.d/mysql /etc/rc5.d/S99mysql -> ../init.d/mysql
mysqlの起動
sudo /etc/init.d/mysql start
バージョンの確認
% mysqladmin version mysqladmin Ver 8.41 Distrib 5.0.37, for unknown-linux-gnu on x86_64 Copyright (C) 2000-2006 MySQL AB This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL license Server version 5.0.37-log Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 24 sec Threads: 1 Questions: 1 Slow queries: 0 Opens: 12 Flush tables: 1 Open tables: 6 Queries per second avg: 0.042
動作確認
% mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.0.37-log Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test | +--------------------+ 3 rows in set (0.00 sec) mysql> create database senna_test; Query OK, 1 row affected (0.00 sec) mysql> use senna_test; Database changed mysql> CREATE TABLE table01 ( -> id INT UNSIGNED AUTO_INCREMENT NOT NULL, PRIMARY KEY(id), -> title VARCHAR(255), -> body TEXT, -> FULLTEXT(body) -> ); Query OK, 0 rows affected (0.02 sec) mysql> use senna_test; Database changed mysql> INSERT INTO table01 VALUES -> (NULL, "衆院選挙について", "皆さんはどの党に投票するのでしょうか"), -> (NULL, "果物", "apple リンゴ、orange オレンジ"), -> (NULL, "歌", "わくわくさせてよ、ついてるねのってるね"), -> (NULL, "MySQL", "MySQLリファレンスマニュアルを全部読め"), -> (NULL, "ロボットのgood designとは", "先週末に開催された GoodDesignPresentation 2005"); Query OK, 5 rows affected (0.53 sec) Records: 5 Duplicates: 0 Warnings: 0 mysql> use senna_test; Database changed mysql> SELECT * FROM table01 WHERE MATCH(body) AGAINST('投票'); +----+--------------------------+--------------------------------------------------------+ | id | title | body | +----+--------------------------+--------------------------------------------------------+ | 1 | 衆院選挙について | 皆さんはどの党に投票するのでしょうか | +----+--------------------------+--------------------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT * FROM table01 WHERE MATCH(body) AGAINST('投票する'); +----+--------------------------+--------------------------------------------------------+ | id | title | body | +----+--------------------------+--------------------------------------------------------+ | 1 | 衆院選挙について | 皆さんはどの党に投票するのでしょうか | +----+--------------------------+--------------------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT * FROM table01 WHERE MATCH(body) AGAINST('apple'); +----+--------+---------------------------------------+ | id | title | body | +----+--------+---------------------------------------+ | 2 | 果物 | apple リンゴ、orange オレンジ | +----+--------+---------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT * FROM table01 WHERE MATCH(body) AGAINST('リンゴ'); +----+--------+---------------------------------------+ | id | title | body | +----+--------+---------------------------------------+ | 2 | 果物 | apple リンゴ、orange オレンジ | +----+--------+---------------------------------------+ 1 row in set (0.01 sec) mysql> SELECT * FROM table01 WHERE MATCH(body) AGAINST('わくわく'); +----+-------+-----------------------------------------------------------+ | id | title | body | +----+-------+-----------------------------------------------------------+ | 3 | 歌 | わくわくさせてよ、ついてるねのってるね | +----+-------+-----------------------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT * FROM table01 WHERE MATCH(body) AGAINST('gooddesign'); +----+----------------------------------+---------------------------------------------------------+ | id | title | body | +----+----------------------------------+---------------------------------------------------------+ | 5 | ロボットのgood designとは | 先週末に開催された GoodDesignPresentation 2005 | +----+----------------------------------+---------------------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT * FROM table01 WHERE MATCH(body) AGAINST('読め'); +----+-------+-------------------------------------------------------+ | id | title | body | +----+-------+-------------------------------------------------------+ | 4 | MySQL | MySQLリファレンスマニュアルを全部読め | +----+-------+-------------------------------------------------------+ 1 row in set (0.00 sec) mysql> show index from table01; +---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | +---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ | table01 | 0 | PRIMARY | 1 | id | A | 5 | NULL | NULL | | BTREE | | | table01 | 1 | body | 1 | body | NULL | NULL | NULL | NULL | YES | FULLTEXT | | +---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ 2 rows in set (0.00 sec) mysql> show table status; +---------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-----------------+----------+----------------+---------+ | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment | +---------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-----------------+----------+----------------+---------+ | table01 | MyISAM | 10 | Dynamic | 5 | 78 | 392 | 281474976710655 | 2048 | 0 | 6 | 2007-03-18 14:55:00 | 2007-03-18 14:55:33 | NULL | utf8_general_ci | NULL | | | +---------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-----------------+----------+----------------+---------+ 1 row in set (0.00 sec) mysql>
検索は成功。ただし、Index_typeがFULLTEXTとだけひょうじされてて、SENNAの表示がないんだけど、いいのかな?
rakeを実行しようとしたときにuninitialized constant ActiveRecordエラーが出る件について
rakeのタスクの最初には、:environmentを実行する必要があるみたい
たとえば、かんたんRuby on RailsでWebアプリケーション開発
かんたんRuby on RailsでWebアプリケーション開発
- 作者: arton
- 出版社/メーカー: 翔泳社
- 発売日: 2006/07/27
- メディア: 大型本
- 購入: 5人 クリック: 211回
- この商品を含むブログ (89件) を見る
task :db_connect do
となっているところを、
task :db_connect => [ :environment ] do
すればうまくいきました。