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的内部报错
之后没有报错的话应该就安装成功了