0

当我需要机械化然后遏制时,我从 irb (v 0.9.5) 获得以下输出:

$ irb
>> require 'mechanize'
=> true
>> require 'curb'
=> true
>>  

那里没有问题。但是,当我以其他顺序需要库时,我得到以下信息:

$ irb
>> require 'curb'
=> true
>> require 'mechanize'
/opt/local/lib/ruby/1.8/openssl/ssl-internal.rb:30: [BUG] Segmentation fault
ruby 1.8.7 (2011-02-18 patchlevel 334) [i686-darwin10]

Abort trap
$ 

我使用的 gems 是最新版本的遏制和机械(v 0.7.15 和 1.0.0,分别)。对于 ruby​​,我使用的是 1.8.7(如上所示)。

另外,我不熟悉 [BUG] 错误消息。这是否意味着我在 ssl 中遇到了一个已知错误?

在此先感谢您的帮助!

4

1 回答 1

1

我无法在 Linux 或 Mac OS 上使用相同版本的 Mechanize 和 Curb 复制它:

Welcome to IRB. You are using ruby 1.8.7 (2011-02-18 patchlevel 334) [i686-linux]. Have fun ;)
>> require 'rubygems' #=> false
>> require 'curb' #=> true
>> require 'mechanize' #=> true

Welcome to IRB. You are using ruby 1.8.7 (2011-02-18 patchlevel 334) [x86_64-darwin10.6.0]. Have fun ;)
>> require 'rubygems' #=> false
>> require 'curb' #=> true
>> require 'mechanize' #=> true

因为您的 Ruby 在 /opt 中,我怀疑您是通过 MacPorts 或类似方式安装它的。如果您正在运行 Snow Leopard,则已知 DVD 中带有 Snow Leopard 的 XCode 存在错误并且可能导致 seg 错误。从 Apple 的 XCode 站点将其更新到最新版本将解决此问题。如果它是在旧版本下编译的,您可能应该重新安装 Ruby。

我看到的另一个可能导致此类错误的问题是在 Leopard 下将 Ruby 安装为 32 位,然后升级到 64 位的 Snow Leopard。没有足够的信息可以告诉。

于 2011-03-29T03:07:53.957 回答