Red Hat Enterprise Linux AS release 4 (Nahant Update 7) に Python と ChaSen と CaboCha をインストールしたので手順をメモっとく

いつもはCentOSなボクですが、今回はワケあってちょっとリッチな
Red Hat Enterprise Linux AS release 4 (Nahant Update 7)
に実行環境を作ったのでその手順のメモです。


最初 Python をインストールしたときにちょいとハマったのが
gcc のバージョンの違いによるものでした。

Red Hat Enterprise Linux AS release 4 (Nahant Update 7)
には2種類の gcc が入っています。
デフォルトの3.4.6 と オプション?の 4.1.2 です

  • gcc バージョン v3.4.6
$ gcc --version
gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-10)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ g++ --version
g++ (GCC) 3.4.6 20060404 (Red Hat 3.4.6-10)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  • gcc バージョン v4.1.2
$ gcc4 --version
gcc4 (GCC) 4.1.2 20071124 (Red Hat 4.1.2-42)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ g++4 --version
g++4 (GCC) 4.1.2 20071124 (Red Hat 4.1.2-42)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


で、Python 2.5 系をコンパイルするには gcc v4.1.2を使わないといけないのですね。最初はそれがわからなくってエラーメッセージとにらめっこしちゃいました。


gcc4 g++4 の方を使うようにするためにはコマンドラインで configure の前に
おまじないを書けばよいみたいです。こんな感じ。

$ CC=gcc4 CXX=g++4 ./configure --prefix=$HOME/local


はい、ではココからはすべてインストールの記録です。
例によって、一般ユーザのホームディレクトリの下に
local ディレクトリを作って、その中に全てインストールしています。


ではでは

Python

$ tar xvfz Python-2.5.2.tgz
$ cd Python-2.5.2
$ CC=gcc4 CXX=g++4 ./configure --prefix=$HOME/local

$ make
$ make test
$ make install

Chasen

darts
$ tar xvfz darts-0.32.tar.gz
$ cd darts-0.32
$ CC=gcc4 CXX=g++4 ./configure --prefix=$HOME/local
$ make
$ make check
$ make install

libiconv
$ tar xvfz libiconv-1.12.tar.gz
$ cd libiconv-1.12
$ patch -p1 < ../libiconv-1.12-ja-4.patch
$ CC=gcc4 CXX=g++4 ./configure --prefix=$HOME/local
$ make
$ make check
$ make install

ChaSen
$ tar xvfz chasen-2.4.4.tar.gz
$ cd chasen-2.4.4
$ CC=gcc4 CXX=g++4 ./configure --prefix=$HOME/local --with-darts=$HOME/local/include --with-libiconv=$HOME/local
$ make
$ make check
$ make install

naist-jdic
$ tar xvfz naist-jdic-0.4.2.tar.gz
$ cd naist-jdic-0.4.2
$ CC=gcc4 CXX=g++4 ./configure
$ make
$ mkdir $HOME/local/etc
$ make install

動作確認
ターミナルの文字コードEUCにする
$ export LANG=ja_JP.eucJP
$ chasen
庭には二羽鶏がいる
庭      ニワ    庭      名詞-一般
に      ニ      に      助詞-格助詞-一般
は      ハ      は      助詞-係助詞
二      ニ      二      名詞-数
羽      ワ      羽      名詞-接尾-助数詞
鶏      ニワトリ        鶏      名詞-一般
が      ガ      が      助詞-格助詞-一般
いる    イル    いる    動詞-自立       一段    基本形
EOS

CaboChaのインストール
TinySVM
$ tar xvfz TinySVM-0.09.tar.gz
$ cd TinySVM-0.09
$ CC=gcc4 CXX=g++4 ./configure --prefix=$HOME/local
$ make
$ make check
$ make install

yamcha
$ tar xvfz yamcha-0.33.tar.gz
$ cd yamcha-0.33
$ CC=gcc4 CXX=g++4 ./configure --prefix=$HOME/local
$ make
$ make check
$ make install

CaboCha
$ tar xvfz cabocha-0.53.tar.gz
$ cd cabocha-0.53/
$ CC=gcc4 CXX=g++4 ./configure --prefix=$HOME/local
$ make
$ make check
$ make install

動作確認
ターミナルの文字コードEUCにする
$ export LANG=ja_JP.eucJP
$ cabocha

Pythonバインディング
python_chasen
$ tar xvfz python_chasen-0.2.tar.gz
$ cd python_chasen
$ python setup.py  build_ext --include-dirs=$HOME/local/include  --library-dirs=$HOME/local/lib/
$ python setup.py install

動作確認
ターミナルの文字コードEUCにする
$ export LANG=ja_JP.eucJP
$ export LD_LIBRARY_PATH=$HOME/local/lib:$LD_LIBRARY_PATH
$ python example.py
僕      ボク    僕      名詞-代名詞-一般
は      ハ      は      助詞-係助詞
ジャングル      ジャングル      ジャングル      名詞-一般
に      ニ      に      助詞-格助詞-一般
寝そべっ        ネソベッ        寝そべる        動詞-自立       五段・ラ行     連用タ接続
て      テ      て      助詞-接続助詞
、      、      、      記号-読点
動物    ドウブツ        動物    名詞-一般
図鑑    ズカン  図鑑    名詞-一般
を      ヲ      を      助詞-格助詞-一般
み      ミ      みる    動詞-自立       一段    連用形
て      テ      て      助詞-接続助詞
い      イ      いる    動詞-非自立     一段    連用形
た      タ      た      助動詞  特殊・タ        基本形
。      。      。      記号-句点
EOS

CaboCha

swig
$ tar xvfz swig-1.3.36.tar.gz
$ cd swig-1.3.36/
$ CC=gcc4 CXX=g++4 ./configure --prefix=$HOME/local
$ make
$ make check
$ make install


CaboCha.py
$ cd cabocha-0.53/python
$ cp CaboCha_wrap.cxx CaboCha_wrap.cxx.ORG
$ vi CaboCha_wrap.cxx
1209行目
修正前
char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc);
修正後
const char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc);

3263行目
修正前
char *c = methods[i].ml_doc;
修正後
const char *c = methods[i].ml_doc;

3267行目
修正前
char *name = c + 10;
修正後
const char *name = c + 10;

$ python setup.py  build_ext --include-dirs=$HOME/local/include  --library-dirs=$HOME/local/lib/
$ python setup.py install --prefix=$HOME/local

動作確認
$ iconv -f euc-jp -t utf-8 test.py > test.utf8.py
$ vi test.utf8.py
# 文字コード関係を修正
#!/usr/bin/python
# coding=utf-8

import CaboCha
import sys

c = CaboCha.Parser (sys.argv)

sentence = u"太郎はこの本を二郎を見た女性に渡した。"

print c.parseToString (sentence.encode('euc-jp'));

tree =  c.parse (sentence.encode('euc-jp'))



 
  太郎
  
 
 
  この
 
 
  
  
 
 
  二郎
  
 
 
  
  
 
 
  女性
  
 
 
  渡し