いつもは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'))太郎 は この 本 を 二郎 を 見 た 女性 に 渡し た 。