Mac下安装Thrift 以及问题解决

XiaoqiangNan 2019-11-04

今天遇到 thrift 的需求,于是安装了一下 Apache 的 Thrift,发现安装过程很艰辛,把遇到的坑整理一下,让你们减少浪费一些时间

常规方法

使用brew安装Thrift

brew install thrift

但是这个方法只能安装 brew 中存在的版本,当前只有最新版 0.12.0 和 0.9.0 这两个版本,如果想安装其他版本,还是要通过官网方法安装

官网方法

首先,下载源码,可以通过 官网文件列表 查找对应版本;如果官网较慢,也可以通过 镜像网站 来查找

然后解压,进入目录,执行如下命令即可

./configure && make

当安装完成后,可以使用如下命令,来检测是否安装好了

thrift --version

问题 · 解决

首先是安装依赖问题,如果遇到像:

Bison version 2.5 or higher must be installed on the system!

这样的报错,可以用如下方法(参考自 mac安装thrift ):

brew install bison

# 注意这里改成自己的路径
# 这是一个临时的环境变量,关闭终端会失效
PATH="/usr/local/Cellar/bison/3.0.4_1/bin/:$PATH"

网上还会搜到其他的方法,也可以参考 Mac安装thrift因bison报错的解决办法 。但是感觉还是上面的方法更简单

如果遇到这样的报错:

src/thrift/transport/TSSLSocket.cpp:43:10: fatal error: 'openssl/opensslv.h' file not found

可以使用如下方法,参考自 Dive Into Thrift Node-安装

brew install openssl # 如果已安装,则进行下一步
brew install pkg-config # 如果已安装,则进行下一步

brew link openssl --force
# 执行此命令,系统会提示有多个方法可以选择,我们可以选 pkg-config 的方法
# 即执行 export PKG_CONFIG_PATH="/usr/local/opt/openssl/lib/pkgconfig"

pkg-config 的介绍 理解 Linux中的pkg-config 工具

之后执行官网安装步骤:

因为 Thrift 支持多种语言,但我们一般只需要一种语言就够了,所以我们可以把其他语言都不选,避免因为其他语言的各种问题带来报错:

./configure LDFLAGS='-L/usr/local/opt/openssl/lib' CPPFLAGS='-I/usr/local/opt/openssl/include' --with-nodejs=yes --with-qt4=no --with-qt5=no --with-openssl=DIR --with-csharp=no --with-c_glib=no --with-java=no --with-erlang=no --with-lua=no --with-python=no --with-perl=no --with-php=no --with-php_extension=no --with-dart=no --with-ruby=no --with-haskell=no --with-go=no --with-rs=no --with-haxe=no --with-dotnetcore=no --with-d=no

如果成功了,就执行:

make

不要执行sudo命令,否则会导致npm的内部报错

之后没有报错的话应该就安装成功了

相关推荐