TokyoCabinet と TokyoTyrant を使う(インストール編)

shibuya.pm #12 に行ってきました。
よし、TokyoCabinet いってみよう〜。

インストール先は、$HOME/local以下を想定します。(perl-API は 普通に入れます)

TokyoCabinet


$ wget http://1978th.net/tokyocabinet/tokyocabinet-1.4.39.tar.gz
$ gzip -cd tokyocabinet-1.4.39.tar.gz | tar xf -
$ cd tokyocabinet-1.4.39
$ ./configure --prefix=$HOME/local
...
$ make
...
$ make install
...

この時点で、PATH に $HOME/local/bin、LD_LIBRARY_PATH に $HOME/local/lib を追加しておきましょう。
そうしないと、これ以後出てくる perl-API とか TokyoTyrant のMake等でコケる所があります。

TokyoCabinet perl-API
これは /usr/local/bin/perl の配下に入れてしまいます。


$ export PATH=$PATH:$HOME/local/bin # 私の場合
$ export LD_LIBRARY_PATH=$HOME/local/lib # 私の場合
$
$ wget http://1978th.net/tokyocabinet/perlpkg/tokyocabinet-perl-1.33.tar.gz
$ gzip -cd tokyocabinet-perl-1.33.tar.gz | tar xf -
$ cd tokyocabinet-perl-1.33
$ /usr/local/bin/perl Makefile.PL LIBS="-L$HOME/local/lib -L. -ltokyocabinet -lz -lbz2 -lpthread -lm -lc"
$ make
...
$ make test
...
$ pfexec make install
...

私の場合、make test で何度かコケテ、最終的に上記のLIBS=...になっています。Makefile.PL を直接書き換えたほうがスマートかも。

コケた時


$ make test
PERL_DL_NONLAZY=1 /usr/local/bin/perl "-Iblib/lib" "-Iblib/arch" test.pl
Can't load './blib/arch/auto/TokyoCabinet/TokyoCabinet.so' for module
TokyoCabinet: ld.so.1: perl: fatal: relocation error: file ./blib/arch/auto
/TokyoCabinet/TokyoCabinet.so: symbol tccmpdecimal: referenced symbol not found
at /usr/local/lib/perl5/5.10.1/i86pc-solaris-thread-multi-64int/DynaLoader.pm
line 200.
at test.pl line 7
Compilation failed in require at test.pl line 7.
BEGIN failed--compilation aborted at test.pl line 7.
# Looks like your test exited with 2 before it could output anything.
make: *** [test_dynamic] Error 2


$ ldd blib/arch/auto/TokyoCabinet/TokyoCabinet.so
libc.so.1 => /lib/libc.so.1
libm.so.2 => /lib/libm.so.2
$

ちゃんとパスが通ってmakeされた場合


$ ldd blib/arch/auto/TokyoCabinet/TokyoCabinet.so
libtokyocabinet.so.9 => [$HOME]/local/lib/libtokyocabinet.so.9
libz.so.1 => /usr/lib/libz.so.1
libbz2.so.1 => /usr/lib/libbz2.so.1
libpthread.so.1 => /usr/lib/libpthread.so.1
libm.so.2 => /usr/lib/libm.so.2
libc.so.1 => /usr/lib/libc.so.1
librt.so.1 => /lib/librt.so.1
libgcc_s.so.1 => /usr/sfw/lib/libgcc_s.so.1
$


TokyoTyrant


$ wget http://1978th.net/tokyotyrant/tokyotyrant-1.1.37.tar.gz
$ gzip -cd tokyotyrant-1.1.37.tar.gz | tar xf -
$ cd tokyotyrant-1.1.37
$ ./configure --prefix=$HOME/local CPPFLAGS=-I$HOME/local/include
$ make
$ make install
configure コケルたなら LDFLAGS=-L$HOME/local/lib を追加?

TokyoTyrant perl-API


$ wget http://1978th.net/tokyotyrant/perlpkg/tokyotyrant-perl-1.16.tar.gz
$ gzip -cd tokyotyrant-perl-1.16.tar.gz | tar xf -
$ cd tokyotyrant-perl-1.16
$ /usr/local/bin/perl Makefile.PL
$ make
...
$ pfexec make install
Installing /usr/local/lib/perl5/site_perl/5.10.1/TokyoTyrant.pm
Installing /usr/local/lib/perl5/site_perl/5.10.1/ttutest.pl
Installing /usr/local/lib/perl5/site_perl/5.10.1/tcrtest.pl
Installing /usr/local/lib/perl5/site_perl/5.10.1/TokyoTyrant.pod
Installing /usr/local/share/man/man3/TokyoTyrant.3
Appending installation info to /usr/local/lib/perl5/5.10.1/i86pc-solaris-thread-multi-64int/perllocal.pod
$