Thrift安装手册

一、Thrift的环境要求

1、Apache Thrift的编译器是用C++编写的,设计为可移植的,但是在使用之前必须安装一些系统要求。请在下面选择您的操作系统,以获取有关设置系统以开始使用的指南

  • Centos 6.5 Install
  • Debian/Ubuntu install
  • OS X Install
  • Windows Install

2、基本要求

  • 一个相对POSIX兼容的* NIX系统
    • 可以在Windows上使用Cygwin或MinGW(但有更好的选项,见下文)
  • g++4.2(thrift编译器插件支持需要4.8或更高版本)
  • boost 1.53.0
  • 编译器可能需要lex和yacc的运行时库。

3、从源构建的要求

  • GNU构建工具:
    • autoconf 2.65
    • automake 1.13
    • libtool 1.5.24
  • pkg-config autoconf macros (pkg.m4)
  • lex和yacc(主要用flex和bison开发)
  • libssl-dev

4、在Windows上从源构建编译器的要求

  • Visual Studio C ++
  • Flex和Bison(e.g. the WinFlexBison package)

5、语言要求

只有在您选择为给定语言构建库时,才需要这些

  • C++
    • Boost 1.53.0
    • libevent (optional, to build the nonblocking server)
    • zlib (optional)
  • Java
    • Java 1.7
    • Apache Ant
  • C#: Mono 1.2.4 (and pkg-config to detect it) or Visual Studio 2005+
  • Python 2.6 (including header files for extension modules)
  • PHP 5.0 (optionally including header files for extension modules)
  • Ruby 1.8
    • bundler gem
  • Erlang R12 (R11 works but not recommended)
  • Perl 5
    • Bit::Vector
    • Class::Accessor
  • Haxe 3.1.3
  • Go 1.4
  • Delphi 2010

二、为Java构建库

安装JDK和Apache ant
Apache Ant版本:1.9.x版本在运行时需要Java1.5到Java1.7,而1.10.x在运行时需要Java1.8。
http://mirrors.shu.edu.cn/apache//ant/binaries/apache-ant-1.9.12-bin.tar.gz
http://mirrors.shu.edu.cn/apache//ant/binaries/apache-ant-1.10.4-bin.tar.xz
以jdk1.7和ant1.9为例

1、解压

[root@node1 ~]# tar -xf jdk-7u80-linux-x64.tar.gz
[root@node1 ~]# tar xf apache-ant-1.9.12-bin.tar.gz

2、配置环境变量

[root@node1 ~]# vim /etc/profile.d/java_version.sh 
# java
export JAVA_HOME=/opt/jdk1.7.0_80
export PATH=${PATH}:${JAVA_HOME}/bin:${JAVA_HOME}/jre/bin
export CLESSPATH=.:${JAVA_HOME}/lib:${JAVA_HOME}/jre/lib

[root@node1 ~]# vim /etc/profile.d/ant_version.sh 
# ant
export ANT_HOME=/opt/apache-ant-1.9.12
export PATH=${PATH}:${ANT_HOME}/bin
[root@node1 ~]# source /etc/profile                     # 加载一下环境变量

3、验证

[root@node1 ~]# java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
[root@node1 ~]# 

[root@node1 ~]# ant
Buildfile: build.xml does not exist!
Build failed
[root@node1 ~]# ant -version
Apache Ant(TM) version 1.9.12 compiled on June 19 2018

三、在CentOS 6.5上构建Apache Thrift

CentOS7.*一般yum安装就可以。
从最小安装开始,在Centos 6.5上构建Apache Thrift需要以下步骤。此示例使用当前开发主分支从源构建。这些说明也适用于从0.9.2开始的Apache Thrift版本。

1、更新系统(暂不操作)

sudo yum -y update

2、安装平台开发工具

sudo yum -y groupinstall "Development Tools"

3、升级autoconf

sudo yum install -y wget
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
tar xvf autoconf-2.69.tar.gz
cd autoconf-2.69
./configure --prefix=/usr
make
sudo make install
cd ..

4、升级的automake

wget http://ftp.gnu.org/gnu/automake/automake-1.14.tar.gz
tar xvf automake-1.14.tar.gz
cd automake-1.14
./configure --prefix=/usr
make
sudo make install
cd ..

5、升级bison

wget http://ftp.gnu.org/gnu/bison/bison-2.5.1.tar.gz
tar xvf bison-2.5.1.tar.gz
cd bison-2.5.1
./configure --prefix=/usr
make
sudo make install
cd ..

6、添加可选的C ++语言库依赖项

所有语言都需要Apache Thrift IDL编译器,此时安装了IDL编译器所需的一切(如果您只需要编译器,则可以跳到Build步骤)。

如果您将使用C ++开发Apache Thrift客户端/服务器,您还需要其他软件包来支持C ++共享库构建。
安装C ++ Lib依赖项

sudo yum -y install libevent-devel zlib-devel openssl-devel

7、升级Boost >= 1.53

yum install  bzip2  bzip2-devel python python-devel -y      # 依赖
#apt-get install libbz2-dev                     # Ubuntu依赖
wget http://sourceforge.net/projects/boost/files/boost/1.53.0/boost_1_53_0.tar.gz
tar xvf boost_1_53_0.tar.gz
cd boost_1_53_0
./bootstrap.sh
sudo ./b2 install

8、构建并安装Apache Thrift IDL编译器

Centos6依赖
# centos6需把libevent-devel升级到2.0.21及以上(源码)
# http://libevent.org/
wget https://github.com/libevent/libevent/releases/download/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz
tar xf libevent-2.0.22-stable.tar.gz  
cd libevent-2.0.22-stable
./configure --prefix=/usr
make
make install
Centos7依赖
yum install libevent libevent-devel -y
源码安装Thrift
[root@node1 thrift-0.11.0]# yum install libtool pkgconfig -y
#http://archive.apache.org/dist/thrift/              # 下载路径
[root@node1 thrift-0.11.0]# wget http://archive.apache.org/dist/thrift/0.11.0/thrift-0.11.0.tar.gz
[root@node1 thrift-0.11.0]# tar xf thrift-0.11.0.tar.gz
[root@node1 thrift-0.11.0]# cd thrift-0.11.0
[root@node1 thrift-0.11.0]# ./bootstrap.sh

configure这一步结束会在terminal输出对不同语言的支持信息,检查一下是否满足自己要求,不满足的话请安装对应语言。

[root@node1 thrift-0.11.0]# ./configure --with-lua=no          # 禁用lua语言,查看更多参数:./configure --help,

thrift 0.11.0

Building C (GLib) Library .... : no
Building C# (Mono) Library ... : no
Building C++ Library ......... : yes
Building D Library ........... : no
Building Dart Library ........ : no
Building dotnetcore Library .. : no
Building Erlang Library ...... : no
Building Go Library .......... : no
Building Haskell Library ..... : no
Building Haxe Library ........ : no
Building Java Library ........ : yes
Building Lua Library ......... : no
Building NodeJS Library ...... : no
Building Perl Library ........ : no
Building PHP Library ......... : no
Building Plugin Support ...... : no
Building Python Library ...... : yes
Building Py3 Library ......... : no
Building Ruby Library ........ : no
Building Rust Library ........ : no

C++ Library:
   C++ compiler .............. : g++
   Build TZlibTransport ...... : yes
   Build TNonblockingServer .. : yes
   Build TQTcpServer (Qt4) ... : no
   Build TQTcpServer (Qt5) ... : no
   C++ compiler version ...... : g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23)

Java Library:
   Using ant ................. : /root/apache-ant-1.9.12/bin/ant
   Using java ................ : java
   Using javac ............... : javac
   Using ant version ......... : Apache Ant(TM) version 1.9.12 compiled on June 19 2018
   Using java version ........ : java version "1.7.0_80"

Python Library:
   Using Python .............. : /usr/bin/python
   Using Python version ...... : Python 2.6.6

If something is missing that you think should be present,
please skim the output of configure to find the missing
component.  Details are present in config.log.

[root@node1 thrift-0.11.0]# make
    ./src/thrift/protocol/TProtocolTypes.h:30: 警告:枚举表以逗号结尾
In file included from src/thrift/transport/THeaderTransport.cpp:20:
./src/thrift/transport/THeaderTransport.h:50: 警告:枚举表以逗号结尾
./src/thrift/transport/THeaderTransport.h:169: 警告:枚举表以逗号结尾
./src/thrift/transport/THeaderTransport.h: In constructor ‘apache::thrift::transport::THeaderTransport::THeaderTransport(const boost::shared_ptr<apache::thrift::transport::TTransport>&)’:
./src/thrift/transport/THeaderTransport.h:79: 错误:类‘apache::thrift::transport::THeaderTransport’没有名为‘TVirtualTransport’的字段
./src/thrift/transport/THeaderTransport.h: In constructor ‘apache::thrift::transport::THeaderTransport::THeaderTransport(boost::shared_ptr<apache::thrift::transport::TTransport>, boost::shared_ptr<apache::thrift::transport::TTransport>)’:
./src/thrift/transport/THeaderTransport.h:93: 错误:类‘apache::thrift::transport::THeaderTransport’没有名为‘TVirtualTransport’的字段
At global scope:
cc1plus: 警告:无法识别的命令行选项“-Wno-c++11-long-long”
make[4]: *** [src/thrift/transport/libthriftz_la-THeaderTransport.lo] 错误 1
make[4]: Leaving directory `/root/thrift-0.11.0/lib/cpp'
make[3]: *** [all-recursive] 错误 1
make[3]: Leaving directory `/root/thrift-0.11.0/lib/cpp'
make[2]: *** [all-recursive] 错误 1
make[2]: Leaving directory `/root/thrift-0.11.0/lib'
make[1]: *** [all-recursive] 错误 1
make[1]: Leaving directory `/root/thrift-0.11.0'
make: *** [all] 错误 2

# 当make报错时,如果是C++的错,且不使用C++,可以把C++关掉:
[root@node1 thrift-0.11.0]# ./configure --with-lua=no --with-cpp=no
[root@node1 thrift-0.11.0]# make
[root@node1 thrift-0.11.0]# sudo make install
验证
[root@node1 thrift-0.11.0]#  thrift -version
Thrift version 0.11.0

这将构建编译器 (thrift/compiler/cpp/thrift --version) 和任何支持的语言库。make install步骤在路径上安装编译器:/usr/local/bin/thrift您可以使用./configure --enable-libs=no开关仅在没有lib构建的情况下构建Apache Thrift IDL编译器。要运行测试,请使用“make check”。

此片段由Apache Thrift的源代码树文档生成:doc/install/centos.md

转载于:https://blog.51cto.com/moerjinrong/2139287

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值