Thriftインストールメモ

CentOS-5.5(5.4でも同じだった)にThriftを入れるメモ。

事前に必要なパッケージがあるので予め入れておく。

http://wiki.apache.org/thrift/GettingCentOS5Packages

$ sudo yum install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel zlib-devel python-devel ruby-devel

Thriftのダウンロードと解凍

$ wget http://ftp.riken.jp/net/apache/incubator/thrift/0.2.0-incubating/thrift-0.2.0-incubating.tar.gz

$ tar -zxvf thrift-0.2.0-incubating.tar.gz
$ cd thrift-0.2.0

インストールはこれを参考に…してはいけない

http://wiki.apache.org/thrift/ThriftInstallation

これを読むとまず最初に bootstrap.sh を実行するように書いてあるのだけど,
これを実行すると具合の悪いことになるる。
以下のようにマクロが見つからないなどと言われてしまう。

configure.ac:50: error: possibly undefined macro: AC_PROG_MKDIR_P
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
configure.ac:147: error: possibly undefined macro: AC_TYPE_INT16_T
configure.ac:148: error: possibly undefined macro: AC_TYPE_INT32_T

そして,cleanup.sh を実行するとconfigureも消えてしまいハマります。
一応このマクロが見つからないエラーはautoconfのバージョンを上げると出なくなったのだけど(2.61以降?),
そもそも bootstrap.sh をスルーすればより平和にビルドができる。
(CentOSの場合。Ubuntuだとwikiの手順どおりでビルドできた。)

$ ./configure
$ make
$ make install

$ thrift -version
Thrift version 0.2.0-exported

最後に,インストールされるファイルのリスト。(107個)

/usr/lib/perl5/5.8.8/i386-linux-thread-multi/perllocal.pod
/usr/lib/perl5/site_perl/5.8.8/Thrift.pm
/usr/lib/perl5/site_perl/5.8.8/Thrift/BinaryProtocol.pm
/usr/lib/perl5/site_perl/5.8.8/Thrift/BufferedTransport.pm
/usr/lib/perl5/site_perl/5.8.8/Thrift/FramedTransport.pm
/usr/lib/perl5/site_perl/5.8.8/Thrift/HttpClient.pm
/usr/lib/perl5/site_perl/5.8.8/Thrift/MemoryBuffer.pm
/usr/lib/perl5/site_perl/5.8.8/Thrift/Protocol.pm
/usr/lib/perl5/site_perl/5.8.8/Thrift/Server.pm
/usr/lib/perl5/site_perl/5.8.8/Thrift/Socket.pm
/usr/lib/perl5/site_perl/5.8.8/Thrift/Transport.pm
/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/Thrift/.packlist
/usr/lib/python2.4/site-packages/thrift/TSCons.py
/usr/lib/python2.4/site-packages/thrift/TSCons.pyc
/usr/lib/python2.4/site-packages/thrift/Thrift.py
/usr/lib/python2.4/site-packages/thrift/Thrift.pyc
/usr/lib/python2.4/site-packages/thrift/__init__.py
/usr/lib/python2.4/site-packages/thrift/__init__.pyc
/usr/lib/python2.4/site-packages/thrift/protocol/TBinaryProtocol.py
/usr/lib/python2.4/site-packages/thrift/protocol/TBinaryProtocol.pyc
/usr/lib/python2.4/site-packages/thrift/protocol/TProtocol.py
/usr/lib/python2.4/site-packages/thrift/protocol/TProtocol.pyc
/usr/lib/python2.4/site-packages/thrift/protocol/__init__.py
/usr/lib/python2.4/site-packages/thrift/protocol/__init__.pyc
/usr/lib/python2.4/site-packages/thrift/protocol/fastbinary.so
/usr/lib/python2.4/site-packages/thrift/server/THttpServer.py
/usr/lib/python2.4/site-packages/thrift/server/THttpServer.pyc
/usr/lib/python2.4/site-packages/thrift/server/TNonblockingServer.py
/usr/lib/python2.4/site-packages/thrift/server/TNonblockingServer.pyc
/usr/lib/python2.4/site-packages/thrift/server/TServer.py
/usr/lib/python2.4/site-packages/thrift/server/TServer.pyc
/usr/lib/python2.4/site-packages/thrift/server/__init__.py
/usr/lib/python2.4/site-packages/thrift/server/__init__.pyc
/usr/lib/python2.4/site-packages/thrift/transport/THttpClient.py
/usr/lib/python2.4/site-packages/thrift/transport/THttpClient.pyc
/usr/lib/python2.4/site-packages/thrift/transport/TSocket.py
/usr/lib/python2.4/site-packages/thrift/transport/TSocket.pyc
/usr/lib/python2.4/site-packages/thrift/transport/TTransport.py
/usr/lib/python2.4/site-packages/thrift/transport/TTransport.pyc
/usr/lib/python2.4/site-packages/thrift/transport/TTwisted.py
/usr/lib/python2.4/site-packages/thrift/transport/TTwisted.pyc
/usr/lib/python2.4/site-packages/thrift/transport/__init__.py
/usr/lib/python2.4/site-packages/thrift/transport/__init__.pyc
/usr/local/bin/thrift
/usr/local/include/thrift/TLogging.h
/usr/local/include/thrift/TProcessor.h
/usr/local/include/thrift/TReflectionLocal.h
/usr/local/include/thrift/Thrift.h
/usr/local/include/thrift/concurrency/Exception.h
/usr/local/include/thrift/concurrency/FunctionRunner.h
/usr/local/include/thrift/concurrency/Monitor.h
/usr/local/include/thrift/concurrency/Mutex.h
/usr/local/include/thrift/concurrency/PosixThreadFactory.h
/usr/local/include/thrift/concurrency/Thread.h
/usr/local/include/thrift/concurrency/ThreadManager.h
/usr/local/include/thrift/concurrency/TimerManager.h
/usr/local/include/thrift/concurrency/Util.h
/usr/local/include/thrift/config.h
/usr/local/include/thrift/processor/PeekProcessor.h
/usr/local/include/thrift/processor/StatsProcessor.h
/usr/local/include/thrift/protocol/TBase64Utils.h
/usr/local/include/thrift/protocol/TBinaryProtocol.h
/usr/local/include/thrift/protocol/TCompactProtocol.h
/usr/local/include/thrift/protocol/TDebugProtocol.h
/usr/local/include/thrift/protocol/TDenseProtocol.h
/usr/local/include/thrift/protocol/TJSONProtocol.h
/usr/local/include/thrift/protocol/TOneWayProtocol.h
/usr/local/include/thrift/protocol/TProtocol.h
/usr/local/include/thrift/protocol/TProtocolException.h
/usr/local/include/thrift/protocol/TProtocolTap.h
/usr/local/include/thrift/server/TNonblockingServer.h
/usr/local/include/thrift/server/TServer.h
/usr/local/include/thrift/server/TSimpleServer.h
/usr/local/include/thrift/server/TThreadPoolServer.h
/usr/local/include/thrift/server/TThreadedServer.h
/usr/local/include/thrift/transport/TBufferTransports.h
/usr/local/include/thrift/transport/TFDTransport.h
/usr/local/include/thrift/transport/TFileTransport.h
/usr/local/include/thrift/transport/THttpClient.h
/usr/local/include/thrift/transport/TServerSocket.h
/usr/local/include/thrift/transport/TServerTransport.h
/usr/local/include/thrift/transport/TShortReadTransport.h
/usr/local/include/thrift/transport/TSimpleFileTransport.h
/usr/local/include/thrift/transport/TSocket.h
/usr/local/include/thrift/transport/TSocketPool.h
/usr/local/include/thrift/transport/TTransport.h
/usr/local/include/thrift/transport/TTransportException.h
/usr/local/include/thrift/transport/TTransportUtils.h
/usr/local/include/thrift/transport/TZlibTransport.h
/usr/local/lib/libthrift.a
/usr/local/lib/libthrift.la
/usr/local/lib/libthrift.so
/usr/local/lib/libthrift.so.0
/usr/local/lib/libthrift.so.0.0.0
/usr/local/lib/libthriftnb.a
/usr/local/lib/libthriftnb.la
/usr/local/lib/libthriftnb.so
/usr/local/lib/libthriftnb.so.0
/usr/local/lib/libthriftnb.so.0.0.0
/usr/local/lib/libthriftz.a
/usr/local/lib/libthriftz.la
/usr/local/lib/libthriftz.so
/usr/local/lib/libthriftz.so.0
/usr/local/lib/libthriftz.so.0.0.0
/usr/local/lib/pkgconfig/thrift-nb.pc
/usr/local/lib/pkgconfig/thrift-z.pc
/usr/local/lib/pkgconfig/thrift.pc