boost 1.46 버젼, 쓰리프트 0.8.0 버젼을 기반으로 하여 스크라이브를 설치하는 방법입니다. 스크라이브는 현재 4년간 소스에 변동이 없습니다. 따라서 최신 라이브러리 기반으로 컴파일 할려고 하면 알려준 방법대로 되지 않습니다. 

1. 부스트 설치 

$ sudo apt-get install libboost-all-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev 


언제나 우분투 (Debian) 계열 (민트도 우분투 계열이라고 볼 수 있으니..) 이라고 가정하고 이야기 할 것입니다. 

2. 쓰리프트 (Thrift) 설치 

$HOME/work 밑에 설치한다고 가정하고 

       $ cd ~/work 
       $ git clone git://git.apache.org/thrift.git
       $ cd thrift
       $ ./bootstraph.sh
       $ ./configure
       $ make
       $ sudo make install
       $ cd lib/py
       $ sudo python setup.py install


 fb303 부분을 컴파일 해줘서 설치합니다. 
       
 

       $ cd ../../contrib/fb303
       $ ./bootstraph.sh
       $ ./configure
       $ make
       $ sudo make install 


만약 이 방법으로 컴파일 안될 시에는 

$ ./configure CPPFLAGS="-DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H  -DBOOST_FILESYSTEM_VERSION=2 -DHAVE_NETDB_H=1 -fpermissive"


해주고 make 와 make install 을 해주면 됩니다. 


3. 스크라이브 설치 

       $ cd ~/work
       $ git clone http://github.com/facebook/scribe.git
       $ cd scribe
       $ CPPFLAGS="-DBOOST_FILESYSTEM_VERSION=2" ./bootstrap.sh
       $ ./configure CPPFLAGS="-DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H  -DBOOST_FILESYSTEM_VERSION=2 -DHAVE_NETDB_H=1 -fpermissive"
       $ make 

       

아마 에러가 발생할 것입니다. 

       undefined reference to boost::system::generic_category()'

위와 같은 에러인데 라이브러리 링크 순서를 바꾸어 주면 거짓말 처럼 해결이 되더군요. 

     

 $ cd src
 $ g++  -Wall -O3  -o scribed store.o store_queue.o conf.o file.o conn_pool.o  scribe_server.o network_dynamic_config.o dynamic_bucket_updater.o  env_default.o -L/usr/local/lib -L/usr/local/lib -L/usr/local/lib -lfb303 -lthrift -lthriftnb -levent -lpthread  libscribe.a libdynamicbucketupdater.a  -L/usr/lib
       -lboost_system-mt -lboost_filesystem-mt 


원래 붉은 색으로 표시 된 부분이 문장 앞 부분에 존재하는데 이를 뒷 부분으로 돌리면 됩니다. 

 

+ Recent posts