歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

分布式日志系統Scribe編譯安裝

分布式日志系統Scribe編譯安裝   最近准備整合多個系統的日志,因而想到構建一套分布式日志存儲系統,首先考慮的是Scribe,不過編譯安裝耗費了很多時間(Scribe相關文檔確實少了點,相比Flume)   環境:Ubuntu13.04 32bit   組件: scribe    2.x(最新版) thrift    0.9.0 boost    1.54 fb303    thrift自帶   至於其他所依賴的相關包(如libevent、automake、flex、bison等)可根據configure的結果進行安裝或更新。   1、安裝boost   官網下載boost,版本要求高於1.36(作者用的是1.54.0),按照文檔中給出的方法編譯:     $tar --bzip2 -xf /home/vincent/Download/boost_1_54_0.tar.bz2     $cd /home/vincent/Download/boost_1_54_0     $./bootstrap.sh --help     $./bootstrap.sh --prefix=opt/boost_1.54     $./b2 install   至此,boost庫編譯完成,編譯時無需指定其他選項,在--prefix參數指定的目錄下生成include和lib文件夾存放頭文件和庫文件。   2、安裝thrift   下載thrift包,安裝是經典的三大步:     $tar zxvf thrift-0.9.0.tar.gz     $cd thrift-0.9.0/     $sudo ./configure CPPFLAGS="-DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H"      $sudo make     $sudo make install   configure時CPPFLAGS參數不可少,否則make時會產生諸如“uint_32未定義”之類錯誤。另外,configure時如找不到boost庫,則需使用--with-boost參數指定boost庫位置。thrift安裝後可以進行簡單的測試以確認是否安裝成功。   3、安裝fb303   fb303包含在thrift安裝包裡,直接make安裝:     $cd contrib/fb303      $sudo ./bootstrap.sh --with-boost=/opt/boost_1.54/lib/      $sudo make      $sudo make install    此處--with-boost即是指定boost庫位置   4、安裝scribe   依賴組件安裝完畢,即可開始編譯scribe:     $./bootstrap.sh     $sudo ./configure --with-boost=/opt/boost_1.54/lib/ --prefix=/opt/scribe     $sudo make     $sudo make install   編譯時可能會產生相關錯誤: 1)configure若遇到如下錯誤     checking whether the Boost::System library is available… yes     checking whether the Boost::Filesystem library is available… yes     configure: error: Could not link against  ! 則需在configure時加上參數     --with-boost-system=lboost_system      --with-boost-filesystem=lboost_filesystem 筆者的configure如下:       sudo ./configure --prefix=/opt/scribe --with-boost=/usr/local/lib --with-boost-system=boost_system --with-boost-filesystem=boost_filesystem CPPFLAGS="-DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H -DBOOST_FILESYSTEM_VERSION=3"   2)make時若遇到:     undefined reference to 'boost::system::generic_category()'     undefined reference to 'boost::system::system_category()' 在確認boost::system庫存在且路徑正確後,檢查GCC鏈接代碼(根據make輸出),筆者的如下: g++  -Wall -O3 -L/usr/local/lib/ -lboost_system -lboost_filesystem  -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 此時需將-lboost_system -lboost_filesystem兩個選項放在最後,並在src目錄下手動執行鏈接即可完成編譯。
Copyright © Linux教程網 All Rights Reserved