読者です 読者をやめる 読者になる 読者になる

CentOS5にTokyoCabinetとPyTCをインストールする

何となく暇だったので、CentOS5にTOkyoCabinetをインストールしてみた。
moved
TokyoCabinet本体は上記リンクからダウンロード。最新版は1.4.14

$ wget http://tokyocabinet.sourceforge.net/tokyocabinet-1.4.14.tar.gz
$ tar xvzf tokyocabinet-1.4.14.tar.gz
$ cd tokyocabinet-1.4.14
$ ./configure
$ make
$ sudo make install

インストールはいつも通りやればうまくいく。あとで知ったんだけど、configureのオプション等は公式ページに詳しく載ってた。とりあえず試すだけなら何にもいらないんじゃないかな?
ここまではうまくいったんだけど、問題はTokyoCabinetのPythonバインディングであるPyTCのインストール。これで結構はまった。
とりあえず

$ sudo easy_install pytc

とすると、あっさりインストールできるんだけど、いざ使おうとすると以下のようなエラーがでた。

Python 2.6.1 (r261:67515, Dec 13 2008, 00:30:16)
[GCC 4.1.2 20071124 (Red Hat 4.1.2-42)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pytc
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "build/bdist.linux-x86_64/egg/pytc.py", line 7, in <module>
  File "build/bdist.linux-x86_64/egg/pytc.py", line 6, in __bootstrap__
ImportError: libtokyocabinet.so.8: cannot open shared object file: No such file or directory

何かよくわからないので、easy_installに頼るのをやめてソースを落としてきていれた

$ wget http://pypi.python.org/packages/source/p/pytc/pytc-0.7.tar.gz#md5=a7346ee22dbe772fbdcd989282335bd8
$ tar xvzf pytc-0.7.tar.gz
$ cd pytc-0.7
$ sudo python2.6 setup.py build
$ sudo python2.6 setup.py install

これまたあっさりインストールできたけど、実行してみると以下のようなエラーが出た

Python 2.6.1 (r261:67515, Dec 13 2008, 00:30:16)
[GCC 4.1.2 20071124 (Red Hat 4.1.2-42)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pytc
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: libtokyocabinet.so.8: cannot open shared object file: No such file or directory
>>> 

さっきよりはエラーメッセージが少なくなったけど、それでもエラー。エラーメッセージを見ると、libtokyocabinet.so.8が無いと言う事なので、探してみた。

$ locate libtokyocabinet.so.8
/usr/local/lib/libtokyocabinet.so.8

/usr/local/lib以下に配置されてた。この辺りで使いもしないTokyoCabinetのインストールになんでこんなに時間使ってんだと切れそうになったけど、がんばってぐぐった。最初は「libtokyocabinet.so.8」でぐぐってたけど、これじゃなくて「cannot open shared object file」でぐぐったらあっさり解決した。解決方法は以下のとおり

$ sudo vim /etc/ld.so.conf
/usr/local/lib    # /usr/local/libを追加
$ sudo /sbin/ldconfig

デフォルトでは/usr/local/libを見る設定になってないらしく、/etc/ld.so.confに追記する必要があった。最後に設定を反映させるためにldconfgをする必要がある
とりあえずこれでpytcをimportすることができたので、暇な時にいじってみたい。