安装Typhoeus宝石失败 - 无法构建宝石扩展。

4
我在尝试安装一个叫做typhoeus的gem时遇到了一个错误(这是在跟随书籍“使用Rails进行服务导向设计”时使用的)- 我已经尝试了很多方法来解决这个问题,但我碰到了瓶颈,在这里发布帖子希望有人能够帮助。

以下是输出内容:

$ gem install typhoeus

Building native extensions.  This could take a while...
ERROR:  Error installing typhoeus:
    ERROR: Failed to build gem native extension.

/Users/my.name/.rvm/rubies/ruby-1.8.7-p302/bin/ruby extconf.rb
checking for curl/curl.h in /opt/local/include,/opt/local/include/curl,/Users/my.name/.rvm/rubies/ruby-1.8.7-p302/include/curl,/Users/my.name/.rvm/rubies/ruby-1.8.7-p302/include,/usr/include/curl,/usr/local/include/curl... yes
checking for curl_easy_init() in -lcurl... yes
creating Makefile

make
gcc -I. -I. -I/Users/my.name/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/i686-darwin10.5.0 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -fno-common -g -O2  -fno-common -pipe -fno-common   -g -DXP_UNIX -O3 -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline  -c native.c
In file included from /usr/local/include/curl/curl.h:35,
                 from ./native.h:5,
                 from native.c:1:
/usr/local/include/curl/curlrules.h:143: error: size of array ‘__curl_rule_01__’ is negative
make: *** [native.o] Error 1

我正在使用rvm和ruby-1.8.7-p302在最新的XCode工具下的OS X Snow Leopard操作系统中。
从搜索中得知,我尝试了各种方法,例如在其他ruby版本(ree-1.8.7-2010.02、ruby-1.9.2-head和系统ruby)下安装gem,为ARCHFLAGS参数传递架构标志(x86_64或i386)等。
由于我是ruby的新手,所以非常感谢任何帮助,谢谢!

我还想知道如何卸载一个像你描述的损坏状态下的 gem。因为 gem 没有完全安装,所以 gem uninstall x 似乎不起作用。 - Jeff Welling
4个回答

19

我不确定在 Mac 上是否相同,但我在 Ubuntu 上遇到了相同的问题。

sudo apt-get install curl  

sudo apt-get install libcurl3 libcurl3-dev

sudo gem install typhoeus 

对我有用,但是只有在安装了libcurl库之后才可以。

谢谢。


9

你只需要安装libcurl3-dev:

sudo apt-get install libcurl3-dev
sudo gem install typhoeus

应该可以正常工作。

2
不确定,但似乎您的系统与宝石源代码有些不一致。由于它使用curl,并且从此旧问题中,我猜测您的curl需要更新。是系统已安装的curl,还是您正在使用macports - 也许这值得更新...或者,您可以尝试在最新的*nix系统上安装 - 这可能有效,并确认它是一个环境问题。从github页面上,有一些关于如何使用旧的curl的说明...祝好运,Chris

谢谢提供的链接。关于curl,我相信我已经安装了最新版本。这是通过'curl -V'命令查看的:curl 7.19.7 (universal-apple-darwin10.0) libcurl/7.19.7 OpenSSL/0.9.8l zlib/1.2.3 Protocols: tftp ftp telnet dict ldap http file https ftps Features: GSS-Negotiate IPv6 Largefile NTLM SSL libz - Folken
我尝试添加链接(http://curl.haxx.se/mail/lib-2008-09/0051.html)建议的定义,但没有任何变化:( - Folken
我在curlrules.h文件中添加了'#define CURL_SIZEOF_LONG 8',没有使用ifdef将其包围,这允许安装typhoeus。然而该文件中有关于数组为负数的注意事项: '如果你正在构建一个应用程序,并尝试使用已经构建的libcurl库,同时在此文件上出现此类错误,则清楚地表明库的构建方式与您尝试为应用程序使用它的方式不匹配。您已编译或二进制的库提供商是唯一能够为您提供所需详细信息以正确使用它的人。' - Folken
很高兴听到您至少有所进步 :) - Chris Kimpton

2

这是一个关于it技术的问题,涉及到libcurl的问题。Typhoeus需要头文件和其他一些内容来编译,但目前出现了问题。

请问是否已经安装了libcurl-dev或者libcurl3-dev?


我执行了“fink list curl -i”命令,得到了以下结果:libcurl3、libcurl3-shlibs、libcurl3-ssl、libcurl3-ssl...、libcurl3-uni...、libcurl3-uni...、libcurl4、libcurl4-shlibs、libcurlpp0、libcurlpp0-s...。由于libcurl-dev和libcurl3-dev不在其中,我认为它们没有安装在我的系统上。 - Folken

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接