来源:自学PHP网 时间:2015-04-14 11:12 作者: 阅读:次
[导读] 分布式日志系统Scribe编译安装最近准备整合多个系统的日志,因而想到构建一套分布式日志存储系统,首先考虑的是Scribe,不过编译安装耗费了很多时间(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目录下手动执行链接即可完成编译。 | 
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com