Mint17下安装TFS(taobao file sysytem)(带gcc4.8.2版本)

最近研究了一下淘宝的分布式文件系统TFS(Taobao file system)。

TFS(taobao file system)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,其设计目标是支持海量的非结构化数据的存储;TFS使用C++语言开发,需要运行在64bit Linux OS上,本文介绍如何在Linux环境编译安装TFS。

在安装的过程中,遇到了许多奇葩的问题,在此吐槽一下淘宝的团队真是懒。TFS介绍里面提到他们团队是用的gcc4.1.2进行编译的,高版本可能会报错,不过经过一般摸索,还是在gcc4.8.2中安装成功了。

Min17自带了gcc4.8.2,在开始安装TFS之前先安装一下g++(sudo apt-get install g++)

安装依赖的软件包

automake TFS基于automake工具构建
apt-get install automake

libtool automake需要使用libtool
apt-get install libtool

realine 用于命令行编辑的库
apt-get install libreadline-dev

libz-devel 用于数据压缩/解压缩
apt-get install zlib1g-dev

uuid-devel 用于生成全局唯一ID
apt-get install uuid-dev
这里我遇到了问题,我使用的是Mint17,使用apt-get安装以后在/usr/include/uuid里面已经有了uuid.h文件,但是,找了个遍都没有找到相关的库文件,也导致在make的时候报错了,所报的错误就是uuid.h文件中声明的几个函数。决定自己下载源代码安装:
在https://answers.launchpad.net/ubuntu/+source/util-linux/2.20.1-1ubuntu1中下载到util-linux_2.20.1.orig.tar.gz包
使用以下命令安装:
tar xzvf util-linux_2.20.1.orig.tar.gz
cd util-linux-2.20.1
./configure --without-ncurses
cd libuuid
make
make install
这样发现在/usr/lib里面有了动态静态的lib文件(.a,.la,.so等文件)

tcmalloc google的内存管理库
apt-get install libgoogle-perftools-dev

安装tb-common-utils
TFS使用tb-common-utils软件包,tb-common-utils包含淘宝使用的基础系统库tbsys和网络库tbnet两个组件;安装tb-common-utils前需要设置环境变量TBLIB_ROOT,tbsys和tbnet将会被安装TBLIB_ROOT对应的路径(必须是绝对路径)下,TFS会在这个路径下查找tbsys、tbnet头文件和库。
设置TBLIB_ROOT环境变量
在~/.bash_profile文件中加入,export TBLIB_ROOT=path_to_tbutil , 然后执行source ~/.bash_profile 注意这样导入并不是永久的,如果把terminal关了重新开再去编译tfs得先运行source ~/.bash_profile一下。

下载源码
# svn co -r 18 http://code.taobao.org/svn/tb-common-utils/trunk tb-common-utils
注意: 这里不要checkout最新版本,version18以后的修改导致部分接口不能前向兼容。

编译安装
# cd tb-common-utils
# sh build.sh
如果一切顺利,tb-common-utils已经安装成功到$TBLIB_ROOT路径下

安装TFS

TFS开源用户大都只使用TFS的基本功能,所以这个版本我们默认只编译TFS的nameserver,dataserver,client和tool,以去除对mysql的依赖,需要使用到rcserver(全局资源管理服务),metaserver(TFS自定义文件名服务)的用户请自行编译安装这两个服务。
下载源码
# svn co http://code.taobao.org/svn/tfs/branches/dev_for_outer_users tfs
编译安装
# cd tfs
# sh build.sh init
# ./configure --prefix=path_to_tfs --with-release
# make
# make install
--prefix 指定tfs安装路径,默认会被安装到~/tfs_bin目录
--with-release 指定按release版本的参数进行编译,如果不指定这个参数,则会按开发版本比较严格的参数编译,包含-Werror参数,所有的警告都会被当错误,在高版本gcc下会导致项目编译不过,很多开源用户反馈的编译问题都跟这个有关,因为gcc高版本对代码的检查越来越严格,淘宝内部使用的gcc版本是gcc-4.1.2。

嗯,上面是安装文档里面的步骤,如果你安装成功了,那么恭喜你。不过我要说的是在安装过程中遇到的各种问题

问题都出现在执行make命令的时候:

1、__GNU_CXX::abs报错,解决方法是直接找到报错的地方把__GNU_CXX注释掉

2、报如下的错误

  • undefined reference to `uncompress‘
  • undefined reference to `uuid_generate‘
  • undefined reference to `uuid_unparse‘

这个错误我真心找了很久,因为一直以为uuid-dev安装成功了,实际上我被欺骗的好惨,万恶的apt-get install uuid-dev命令欺骗了善良的我,它居然就安装了一个.h文件真是醉了。所以一定要下载源代码安装。

ok,安装成功以后还是报错。嗯。makefile文件里面没有指名使用uuid。so,修改tfs/src/tools/nameserver/makefile以及tfs/src/tools/transfer/makefile文件,总之看哪里报错就去哪里修改,报错的时候第一个make[×]: Leaving directory `×××ב就是报错的地方。修改那个文件夹下面的makefile文件:

找到LIBS的定义,到后面添加   -lz -luuid

总结

在安装的过程中真的遇到很多的问题,基本上都是gcc版本问题,依赖库没有安装好的问题。

gcc版本问题可以尝试安装一下gcc4.1.2版本,gcc官网有两个gcc版本共存的教程。用高版本的gcc来编译的话就看人品了。出现什么错误就去改代码吧。

依赖库没有安装好也是一件很×疼的事情,主要是遇到了uuid_dev只装了个.h文件这样的奇葩问题。

时间: 2024-10-29 15:14:17

Mint17下安装TFS(taobao file sysytem)(带gcc4.8.2版本)的相关文章

Centos5下安装tfs并使用nginx做访问

操作系统环境 [[email protected] ~]# uname -aLinux localhost.localdomain 2.6.18-371.9.1.el5 #1 SMP Tue Jun 10 17:49:56 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux[[email protected] ~]# cat /etc/issueCentOS release 5.10 (Final)Kernel \r on an \m [[email protecte

Centos7下安装tomcat(详解带图)。

Linux下安装Tomcat.1.首先需要安装他的依赖包jdk并配置Java.我们去浏览器搜索Java,并找到下载页面.然后运用wget进行下载如下图:注:需要把红色箭头标注的地方选中才可以进行复制链接.2.接下来把下载好的安装包解压.我是解压到了/data/server.3.接下来我们修改/etc下的配置文件(配置环境变量)vi /etc/profile然后 :wq退出并保存.保存之后通过source /etc/profile命令使修改的配置生效.然后java -version,检测版本,看是

在Windows下安装64位压缩包版mysql 5.7.11版本的方法

为了学习数据库,自己去网上下载了最新版本的Windows64位的mysql 5.7.11,但是花了很长的时间在安装的问题上,同时也借鉴了几位前辈的博文来帮助自己解决在安装过程中遇到的问题,安装成功之后,我来总结一下Windows下安装这个版本的步骤,同时也借鉴了几位前辈的博文来帮助解决自己在安装过程中遇到的问题. http://my.oschina.net/happymzw/blog/645198?fromerr=dqUoSnO6 http://www.cnblogs.com/endv/p/52

linux下安装MySQL出错file /usr/share/mysql/charsets/latin2.xml from install of MySQL-......

linux64 red hat 6.3企业版 开始错误装了32位mysql最后怎么也装不上64mysql了,折腾了一番最后全部卸载搞定: file /etc/init.d/mysql from install of MySQL-server-5.5.28-1.linux2.6.x86_64 conflicts with file from package MySQL-server-5.1.7-0.i386    file /usr/bin/my_print_defaults from insta

【Windows、SVN】在Windows服务器下安装SVN,并在客户端能维护代码版本

1.分别在客户端和服务器端安装软件 在网上搜索一下安装包的下载地址(这里暂不介绍) 得到2个安装文件 Server是装在服务器端的,另外一个装在客户端 2.安装SVN服务器端 基本一致下一步即可 特殊的步骤下面列出来: 安装完成后,打开软件 创建用户,输入帐号密码即可 然后创建一个仓库,除了需要输入仓库名,一直下一步即可 创建仓库完成后,会显示一个页面 这个地址就是客户端用来连接的地址,如将马赛克部分改成服务器的IP地址,然后加上":端口号"即可 到这里,服务器设置完成 3.安装客户端

[TFS 2013] 安装 TFS 2013 Preview–Basic

[TFS 2013] 安装 TFS 2013 Preview–Basic 在只需要做版本管控,不需要报表的情况下,选择基本组态是最适当不过了 它会帮我们安装 1.TFS 2013 2.SQL Express 3.SharePoint Foundation 安装环境: Windows 8 Preview 中文板 安装步骤: Step1.下载 / 安装 TFS 2013 Preview Step2.设定 Application Tier Step3.测试http://localhost:8080/t

Linux下安装webstorm

Linux下安装webstorm 1--在webstorm官网里面下载最新的版本 WebStorm-11.0.3.tar.gz 2--创建webstorm的安装目录 #mkdir /usr/webstorm 3--解压 # tar zxvf WebStorm-11.0.3.tar.gz -C /usr/webstorm 4--阅读这个  Install-Linux-tar.txt文件 通过这个文件我们可以看到进入到bin目录执行这个webstorm.sh就可以运行这个程序了 5--输入序列号 注

解决svn在win7下安装后右键无菜单项的问题

解决svn在win7下安装后右键无菜单的问题.该版本为1.8.10版本,其中包括安装包跟中文插件包,请先安装TortoiseSVN-1.8.10.26129-win32-svn-1.8.11.1420009704:然后安装LanguagePack_1.8.10.26129-win32-zh_CN.msi 下载无需积分,下载地址:http://download.csdn.net/detail/a358763471/9058629 注意事项:安装之前请确保已经卸载现有版本,并且最好用清理工具清一下注

windows下安装redis并配置外网访问

windows下安装redis已经配置外网访问 下载windows版本redis 官网无法下载windows版本的redis,需要到此链接下载https://github.com/microsoftarchive/redis/releases 选择 .msi 结尾的进行下载 双击运行,直接安装.根据提示进行安装即可.可以选择安装的端口 进入安装目录 ? 选择安装的目录(根据自己实际情况选择) ? 选择运行的端口(根据自己实际情况安装) 设置redis运行的最大内存 设置配置文件(进入安装目录)