您的位置:首页 > 编程语言 > Ruby

Fix Thrift 0.2.0 Installation with Ruby 1.9.1

2010-02-28 01:41 225 查看
When I try the command "gem install thrift" with Ruby 1.9.1, I got a compilation error with something related to a C function "strlcpy()".

Then I searched the web. It seems I am not alone and the community know it.

However I do not want to wait for official update, I want to try Cassandra and Thrift is a dependency I have to use now.

So, read on if you want a dirty fix.

Start command line console and run:

$ gem install thrift

If you got the error with "strlcpy", you should have thrift code downloaded in your ruby gems folder.

It is "C:/Ruby/lib/ruby/gems/1.9.1/gems/thrift-0.2.0" for my computer on Windows.

$ cd C:/Ruby/lib/ruby/gems/1.9.1/gems/thrift-0.2.0/ext

If you are using linux, check the lib/.../ext folder.

Open "extconf.rb" and "struct.c" with a text editor. Comment out HAVE_STRLCPY in "struct.c" like this:

/*

#ifndef HAVE_STRLCPY

static

size_t

strlcpy (char *dst, const char *src, size_t dst_sz)

{ ...

}

#endif

*/

Comment out have_func line in "extconf.rb" like this:

# have_func("strlcpy", "string.h")

Then run:

$ cd C:/Ruby/lib/ruby/gems/1.9.1/gems/thrift-0.2.0

$ ruby setup.rb

$ gem spec C:/Ruby/lib/ruby/gems/1.9.1/cache/thrift-0.2.0.gem --ruby > /

C:/Ruby/lib/ruby/gems/1.9.1/specifications/thrift-0.2.0.gemspec

$ gem list

You should see "thrift (0.2.0)" is in your local installed gem list.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: