1、前言
Apache Thrift,它采用接口描述语言定义并创建服务,支持可扩展的跨语言服务开发,所包含的代码生成引擎可以在多种语言中,如 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk 等创建高效的、无缝的服务,其传输数据采用二进制格式,相对 XML 和 JSON 体积更小,对于高并发、大数据量和多语言的环境更有优势。
前段时间,花了将近3个小时才正确安装thrift,特此记录正确安装过程,以帮助有需要的同学。
2、前提
本文假设你以正确安装 brew,git
3、安装过程
3.1、下载homebrew-core(任意目录)
git clone git@github.com:Homebrew/homebrew-core.git
3.2、将代码切换至对应版本
进入代码目录,查看0.9.2对应commit,并切换至该commit
cd homebrew-core
git log
git checkout 6ae86d4a56e63c29cc9260cbc340bad71e56bee8 -b version0.9.2.bottle
3.3、修改Formula/thrift.rb
修改 Formula/thrift.rb的27行,diff 如下
--- a/Formula/thrift.rb
+++ b/Formula/thrift.rb
@@ -24,7 +24,8 @@ class Thrift < Formula
bottle do
cellar :any
- revision 1
+ # revision 1
+ rebuild 1
3.4、安装
brew install Formula/thrift.rb
3.5、查看版本
此时在任意位置输入如下命令:
thrift -version
若能正确显示 #显示:Thrift version 0.9.2 则安装成功
4、可能碰到的问题
下方提到的改动,均指 Formula/thrift.rb
4.1、Error: thrift: Unsupported special dependency :python
53行 改成 depends_on "python" => :optional
4.2、Failed to download resource "thrift" Download failed: https://www-us.apache.org/dist/thrift/0.9.2/thrift-0.9.2.tar.gz
发现是文件路径已经变了,第8行 改成 url "http://archive.apache.org/dist/thrift/0.9.2/thrift-0.9.2.tar.gz"
4.3、An exception occurred within a child process: NoMethodError: undefined method `j1' for #<Object:0x00000001010c2180>
直接把这个注释了,78行 # ENV.j1
4.4、Error: undefined method `undent' for #<String:0x0000000102c5b900>
忽略即可,此时已经安装成功
5、最后
Thrift各版本之间不兼容,很是影响用户体验。但由于其高效、跨语言的特性,仍在企业中有大量应用。如果你跟我一样,那么此时本机已经正确安装Thrift,酣畅淋漓的使用它吧