红联Linux门户
Linux帮助

Ubuntu12.04 LTS下Facebook scribe安装过程

发布时间:2017-06-13 09:40:29来源:linux网站作者:FollowYH
说明:scribe是Facebook于2008年开源的分布式日志收集系统。现在Facebook已经不再对scribe进行维护。Scribe网上资料较少,安装过程也比较复杂,网上很少详细的安装报告,而且资料大都历史较为久远。如果真的想要安装scribe,请务必要耐心,结合查找到的资料,并进行分析。
起初,我打算使用Ubuntu 16.04 LTS来安装scribe,但是怎么都安装不好在make或者make install的地方总是出错,并且难以追踪错误原因,可能是没有向后兼容的缘故。除此之外还要考虑Ubuntu和thrift之间的版本关系。最终,在经过一段时间的试错之后,确定了安装scribe的环境:Ubuntu 12.04 LTS + thrift-0.9.0 + scribe(版本:2.2)。以下是较为详细的安装过程:
 
1、在开始之前,首先要安装相关的依赖包,这点非常重要。
安装依赖包,命令:
sudo apt-get install libevent-dev libglib2.0-dev automake libboost-dev libssl-dev
ruby-dev python-dev collectd-dev bison flex autoconf ant Git-core
注意:可能还会需要其他的安装包,请根据后续的编译提示进行安装,或者网上查找资料,进行补充。安装包的需要数量根据系统的执行环境有所差异,因为可能有些安装包你之前安装过,那么现在就不必再重新安装了。
 
2、thrift官网下载thrift-0.9.0.tar.gz,官网地址:http://thrift.apache.org/
接下来在终端输入以下命令(将thrift-0.9.0.tar.gz解压至home目录):
$tar -zxf thrift-0.9.0.tar.gz
$cd thrift-0.9.0
$./configure CPPFLAGS="-DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H"
$ make
$ sudo make install
$ cd contrib/fb303
$ ./bootstrap.sh
$ make
$ sudo make install
 
3、安装scribe
(1)安装依赖包:
命令:
sudo apt-get install gawk libboost-system-dev libboost-filesystem-dev libtool
(2)执行以下命令(仍然选择home目录存放scribe):
$ git clone git://github.com/facebook/scribe.git
$ cd scribe
$ ./bootstrap.sh
$./configure CPPFLAGS="-DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H -DBOOST_FILESYSTEM_VERSION=2"
$ make
(3)尝试连接到scribed时make可能出错,报错如下:
file.cpp:(.text.startup+0x23): undefined reference to `boost::system::generic_category()'
file.cpp:(.text.startup+0x2f): undefined reference to `boost::system::generic_category()'
file.cpp:(.text.startup+0x3b): undefined reference to `boost::system::system_category()'
解决方法是将错误信息前面的g++行进行修改,g++行的原始信息如下:
g++  -Wall -O3 -L/usr/lib  -lboost_system-mt -lboost_filesystem-mt -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-mt -lboost_filesystem-mt” 移动到行的末尾), 进入src目录,手动执行g++命令:
$ cd src
$ g++  -Wall -O3 -L/usr/lib  -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-mt -lboost_filesystem-mt
“-DBOOST_FILESYSTEM_VERSION=2”只有在你的libboost版本为1.46或者更高的时候才需要。
(4)执行命令:
$sudo make intall
在/home目录/scribe/src目录下生成可执行文件:scribed.
 
4、scribe包在examples目录下有一些例子可以直接根据README文件运行,但是在运行之前还需要进行一项工作,执行以下命令:
cp -a /usr/lib/python2.7/site-packages/* /usr/lib/python2.7/dist-packages/
具体的路径,根据自己的环境进行相应的替换。另一种方法就是在跑例子之前,配置环境变量PYTHONPATH,但是我设置之后发现执行./scribe_ctrl stop会出错,提示:ImportError: No module named fb303_scripts。
 
5、关于参考文献。
文末所列参考文献基本可以比较完美的解决scribe安装的问题。这也是我花了很多时间进行筛选最后选定的觉得较好的参考文献,希望能对大家有所帮助。
Ubuntu12.04 LTS下Facebook scribe安装过程
 
本文永久更新地址:http://www.linuxdiyf.com/linux/31447.html