thrift多平台安装
thrift支持多语言的RPC,一直都想深入学习了解thrift,最近有空,就上网查了些资料,学习了一下,对它的使用有了一些了解。本篇是写thrift的安装,使用方法会另起一篇来写。
本文使用thrift的版本是0.9.1。
1.windows平台安装
直接下载编译好的exe文件,就可以使用了。
下载链接在这里
新建目录,C:\Program Files\thrift,把下载好的thrift-0.9.1.exe文件放在里面。把C:\Program Files\thrift添加到windows下面的环境变量,如下图
现在使用thrift官网的例子来试试thrift是否正确安装。
example.thrift文件里面的内容是:
struct UserProfile {
1: i32 uid,
2: string name,
3: string blurb
}
service UserStorage {
void store(1: UserProfile user),
UserProfile retrieve(1: i32 uid)
}
使用命令,thrift-0.9.1 --gen erl example.thrift来产生erlang的代码文件。从下图可以看出,它会在目录下面产生一个gen-erl文件夹,里面就是我们需要的代码文件了。
大家可以试一下其他语言,例如go,js,php,cpp。
到这里,windows下面的thrift安装就完成了。
2.debian/ubuntu下面源码编译安装thrift
源码编译安装就是麻烦一点,首先要安装thrift的依赖包。
主要参考Debian or Ubuntu setup, 以及Building from source
安装依赖:
apt-get install libboost-dev libboost-test-dev libboost-program-options-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev
在ubuntu 13.04或者更高版本可以使用下面命令来安装所有依赖包:
apt-get build-dep thrift-compiler -y
安装erlang包,编译需要启用erlang支持:
wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
dpkg -i erlang-solutions_1.0_all.deb
apt-get update
apt-get install erlang
在debian平台可能会报错:
证书所有者与主机名 “packages.erlang-solutions.com” 不符
可以使用下面命令来下载
wget --no-check-certificate -c https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
在安装的过程中,输入wheezy。
erlang-solutions的erlang版本版本是最新的,而且可以根据你的linux系统来设置软件源,更新erlang包方便很多。
使用git下载thrift源码
git clone -b 0.9. https://github.com/apache/thrift thrift-0.9.1
特意使用git下载,而不是直接下载apache打包好的tar包,是因为apache在打源码包的时候,出现了一些其他问题。[O]Ubuntu 13.10 thrift-0.9.1 安装 介绍到这个问题。我自己也是遇到了这个坑,才会使用这个方法下载源码。
./bootstrap.sh
./configure --with-cpp=no --with-python=no
make
make check
make install
上面configure不启动cpp以及python支持,原因有2个:
原因1,在make check段,总是报错,通不过测试。我发现部分原因是有些测试代码缺失,没完成,例如变量没填上。对于没有通过测试用例的代码,我自己总是持怀疑态度。
原因2,我自己没使用cpp以及python。
当然,如果你不关注测试用例,你可以直接make && make install
编译安装完毕后,在/usr/lib/erlang/lib/thrift-0.9.1里面就是thrift对erlang语言的代码支持包。里面有thrift的erlang代码,大家可以看看。
使用thrift --gen erl example.thrift就可以产生我们需要的代码文件。
3.centos安装thrift
在centos源码安装thrift 0.9.1版本麻烦,我自己是没有成功。
在CentOS setup介绍了centos的编译方法,我照着做,但是autoconf的版本不给力,比thrift要求的版本要低。可怜我使用的是centos 6.5,是最新的centos版本了,这可咋整?
在经过编译安装最新版autoconf折腾后,编译thrift还是报错。我放弃编译了,改为直接使用其他人的二进制包。
centos的rpm包就是多,我搜索了n久,终于发现了下面这个链接,里面就有编译好的thrift包。
http://download.opensuse.org/repositories/home:/jblunck:/messaging/CentOS_CentOS-6/
好,下载repo文件,直接下载安装thrift
cd /etc/yum.repos.d/
wget -c http://download.opensuse.org/repositories/home:/jblunck:/messaging/CentOS_CentOS-6/home:jblunck:messaging.repo
yum makecache
yum install thrift
安装过程中会要求你确认是否安装,这是因为包没有签名,没有关系,我直接回答y。
使用这种方法安装的thrift跟windows下安装的thrift差不多,只能产生多语言的代码文件,但是缺少里面的语言的驱动代码文件。
至此,thrift的安装步骤完成,下篇会介绍如何根据thrift来写一个具体的erlang项目。
thrift多平台安装的更多相关文章
- rpc框架之 thrift 学习 1 - 安装 及 hello world
thrift是一个facebook开源的高效RPC框架,其主要特点是跨语言及二进制高效传输(当然,除了二进制,也支持json等常用序列化机制),官网地址:http://thrift.apache.or ...
- Xamarin C# Android for Visual Studio 平台安装
原文:Xamarin C# Android for Visual Studio 平台安装 Xamarin是基于Mono的平台,目前主要有以下产品(更具体请见:http://xamarin.com/pr ...
- Cordova WP8 平台安装部署
原文:Cordova WP8 平台安装部署 Cordova是一个开放源码移动开发框架. 它允许您使用标准的 web 技术如 HTML5. CSS3 和 JavaScript 进行跨平台开发,避免每个移 ...
- Linux平台安装MongoDB及使用Docker安装MongoDB
一.Linux平台安装MongoDB MongoDB 提供了 linux 各发行版本 64 位的安装包,你可以在官网下载安装包. 下载地址:https://www.mongodb.com/downlo ...
- Windows平台安装配置mysql数据库
Windows平台安装配置mysql数据库 作者:Eric 微信:loveoracle11g 去下载mysql软件 https://www.mysql.com/downloads/ https://d ...
- Web 平台安装程序 5.0(Microsoft Web Platform Installer) 由于修改常用选择不正确导致打开就报错
如图: 解决方案.第一步先卸载 Web 平台安装程序 5.0 第二步 将你添加配的文件删除 第三步:重新安装就可以了
- 你使用 Web 平台安装程序命令行工具
你使用 Web 平台安装程序命令行工具 获取的软件由其所有者授权给你.Microsoft 未授予你第三方软件的任何权利.已成功加载主源: https://go.microsoft.com/?linki ...
- Window 平台安装 Python:
Window 平台安装 Python: 打开WEB浏览器访问http://www.python.org/download/ 在下载列表中选择Window平台安装包,包格式为:python-XYZ.ms ...
- XXL-JOB分布式任务调度平台安装与部署
配XXL-JOB分布式任务调度平台安装与部署
随机推荐
- 【 es搜索】
地图搜索实现: ①参数: 左下角经纬度和右上角经纬度 图层数(zoom) 关键字等各种数据库中的字段 排序方式 具体的坐标点+距离 ②实现 a.用es作为关系库,首先先mapping所有的字段,然后用 ...
- Centos配置网卡子接口
1.检查OS是否加载802.1q模块: 方法一: [root@rs2 ~]# modinfo 8021q 方法二: [root@rs2 ~]# modinfo -F filename 8021q 方法 ...
- golang 协程嵌套,会产生依赖关系(父子关系)么?
编码时冒出一个问题:在一个协程内部,再创建一个或多个协程,是否会产生依赖关系? 做了一个小实验,这里随笔记录一下经过,备注后续深入研究. test代码: package main import ( & ...
- msys2-x86_64搭建QT Mingw64编译环境
1.安装msys2-x86_64 2.环境变量 PATH 添加 C:\msys64\home\%name%3. 打开MSYS2 Shell,更新包数据库和核心系统包 pacman -Syu4. 关闭M ...
- Caliburn.Micro 杰的入门教程3,事件和参数
Caliburn.Micro 杰的入门教程1(翻译)Caliburn.Micro 杰的入门教程2 ,了解Data Binding 和 Events(翻译)Caliburn.Micro 杰的入门教程3, ...
- 成都Uber优步司机奖励政策(1月21日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- CodeForces 547D Mike and Fish 思维
题意: 二维平面上给出\(n\)个点,然后对每个点进行染色:红色和蓝色,要求位于同一行或同一列的点中,红色点和蓝色点的个数相差不超过1 分析: 正解是求欧拉路径,在这篇博客中看到一个巧妙的思路: 对于 ...
- spring源码-自定义标签-4
一.自定义标签,自定义标签在使用上面相对来说非常常见了,这个也算是spring对于容器的拓展.通过自定义标签的方式可以创造出很多新的配置方式,并且交给容器直接管理,不需要人工太多的关注.这也是spri ...
- Ruby 基础教程1-5
1.条件语句 if unless case unless和if相反,条件不成立则执行 2.条件 除了 false和nil 其他都是true 3.unless 语法 ...
- postman使用感言
这段时间接口测试一直使用的postman,一款谷歌接口测试插件,感受如下 优点: 1.对于中小型公司来说应该是够用的,特别是一键接口环境切换,一键设置header,作为一般的接口测试来说已经很不错了, ...