Thrift Install

Nov 15, 2017


简介

略,O(∩_∩)O哈哈~

安装

详情见这里

Install Boost

下载见这里

./bootstrap.sh
sudo ./b2 threading=multi address-model=64 variant=release stage install

Install libevent

下载见这里

./configure --prefix=/usr/local 
make
sudo make install

Building Apache Thrift

下载见这里

./configure --prefix=/usr/local/ --with-boost=/usr/local --with-libevent=/usr/local

Bison

安装 Thrift 时报错,错误如下:

checking for bison version >= 2.5... no
configure: error: Bison version 2.5 or higher must be installed on the system!

使用brew install bison命令安装 Bison
Bison 安装完成后执行 Thrift 错误依旧
执行sudo find / -name bison查看本机其它位置的Bison
然后依次执行以下命令:

cd /Library/Developer/CommandLineTools/usr/bin/
sudo mv bison bison_bak
sudo cp /usr/local/Cellar/bison/3.0.4/bin/bison .
cd -
./configure --prefix=/usr/local/ --with-boost=/usr/local --with-libevent=/usr/local
cd -
sudo mv bison_bak bison
cd -
make
sudo make install

即:先备份涉及的Bison,然后用最新的Bison替换之,安装Thrift,恢复Bison,继续安装Thrift
参考见这里

openssl

在执行sudo make install时报错:

fatal error: 'openssl/err.h' file not found

参考见这里

brew install openssl
brew link openssl --force

再执行sudo make install

SIP

再执行时报错,虽然使用了sudo,但依然权限不足:

error: could not create '/usr/lib/python2.7/site-packages': Operation not permitted

这是因为系统引入了SIP机制(System Integrity Protection),默认下系统启用SIP系统完整性保护机制,无论是对于硬盘还是运行时的进程限制对系统目录的写操作。
解决方案是暂时取消SIP机制,做法如下:

  1. 重启电脑,按住Command+R(直到出现苹果标志)进入Recovery Mode(恢复模式)
  2. 左上角菜单里找到实用工具 -> 终端
  3. 输入csrutil disable回车
  4. 重启Mac即可

若想重新启动SIP机制,重复上述步骤,命令改用csrutil enable即可
参考见这里

remake

关闭SIP机制后再执行依然报错:

dyld: Symbol not found: _GENERAL_NAME_free
...
make: *** [install-recursive]

第一句检索没有答案,最后一句检索的建议是:make 时加 sudo
于是,索性所有的命令都重新执行一遍:

cd /Library/Developer/CommandLineTools/usr/bin/
sudo mv bison bison_bak
sudo cp /usr/local/Cellar/bison/3.0.4/bin/bison .
cd -
./configure --prefix=/usr/local/ --with-boost=/usr/local --with-libevent=/usr/local
sudo make clean
sudo make
sudo make install
cd -
sudo mv bison_bak bison
thrift -version

一气呵成,安装完毕,一切正常
最后重新开启SIP机制即可

后记

我之前安装的 0.10.0 版本,公司要求安装 0.9.3 版本,于是重新安装
结果报错

make[4]: *** No rule to make target `gen-cpp/.deps/proc_types.Plo'.  Stop.

问题原因是执行make clean两次会导致此问题,有可能是我操作上有问题多执行了一次,因此将 0.9.3 文件夹删除,重新解压、编译,期间不执行任何make clean命令,问题解决
参考见这里