干净安装后持久的Ruby segfaulting

时间:2012-01-25 09:23:55

标签: ruby ruby-on-rails-3 openssl segmentation-fault net-http

当使用Koala gem通过HTTP进行交谈时,Ruby会保持segfaulting:

/Users/pawel/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:799: [BUG] Segmentation fault

我尝试过以下方法:

  • 运行which -a ruby,通过MacPorts显示多个Rubies。所以我删除了那些并再次运行相同的命令只返回/usr/bin/ruby
  • 我已删除了PostgreSQL的MacPorts版本并将其与Homebrew一起安装(使用MacPorts,它安装了自己的OpenSSL版本)
  • 正在运行openssl version会返回OpenSSL 1.0.0g 18 Jan 2012
  • 我从RVM中删除了Ruby 1.9.3并尝试了下面没有工作的Luciano方法。
  • 我还尝试从RVM重新安装1.9.3并指定--with-openssl-dir=/opt/local,因为which openssl返回/opt/local/bin/openssl
  • 我重新安装了RVM(它现在是/Users/pawel/.rvm/bin/rvm中的版本1.10.2)
  • 我已升级到Ruby 1.9.3-p125并已尝试过1.9.2
  • 我已按照此处的说明操作:http://www.christopherirish.com/2011/09/02/ruby-1-9-2-segmentation-fault-and-openssl/(实际上是我上面的步骤)。我也读过克里斯托弗的上一篇文章here
  • 在我的项目目录中,当我运行以下内容时,我得到了预期的0。:

    ruby -rubygems -e" require 'eventmachine'; require 'openssl' "; echo $?

  • 我尝试sudo port -f deactivate openssl但是当我尝试启动Rails服务器时,我得到了Library not loaded: /opt/local/lib/libssl.1.0.0.dylib

我还需要一些关于我还能尝试什么的想法,或者我错过的事情。

3 个答案:

答案 0 :(得分:7)

我也遇到了相同的Segmentation Fault错误,但我正在尝试列出AWS-S3上的文件。

修改

这种方式对我有用:

export PATH=/usr/bin:/bin:/usr/sbin:/sbin:$HOME/.rvm/bin
rvm remove 1.9.3 
rvm pkg install iconv
rvm pkg install openssl
rvm install ruby-1.9.3 --with-openssl-dir=~/.rvm/usr --with-iconv-dir=~/.rvm/usr
  • 正如@Simpleton所说,我在错误的地方写了评论。现在我正在用响应编辑它。 ; - )

答案 1 :(得分:2)

问题似乎是Homebrew和MacPorts存在冲突,所以我删除了MacPorts,删除了所有包和/opt/local/目录。由于在Homebrew上安装PostgreSQL,这导致了 PG gem的一些问题。

所以我删除了Postgres公式,然后重新安装它,并使用Homebrew进行OpenSSL安装。

之后我破坏了RVM并再次安装了它和我的Rubies(不确定这一步是否必要)并最终确实有效。

答案 2 :(得分:0)

我也遇到过这个问题,但使用了不同的解决方案。这是full stack trace of the error

以下是官方错误报告:http://bugs.ruby-lang.org/issues/6184堆栈跟踪下方的回复非常有用。

  

如果你使用OS X的默认openssl - >喜欢brew install openssl并使用已安装的openssl进行构建,然后再试一次。

     

如果您使用的是由用户安装的openssl - >使用OS X默认ssl构建并重试。

这听起来类似于readline library installed in MacPorts broke a ruby installation时最近的问题。在破损的ruby安装上运行以下脚本显示它正在加载MacPorts openssl lib

require 'net/https'
puts `lsof -p #{$$} | grep ssl | awk '{print $9}'`

(输出)

/Users/john/.rbenv/versions/1.9.3-p125/lib/ruby/1.9.1/x86_64-darwin11.2.0/openssl.bundle
/opt/local/lib/libssl.1.0.0.dylib

解决方案是在安装ruby时暂时将MacPorts移出/opt/local

  1. 退出正在访问MacPorts文件的所有进程。您可以使用sudo lsof | grep /opt/local查看哪些内容正在运行。
  2. sudo mv /opt/local /opt/localbak
  3. 打开一个新终端,然后编译并安装Ruby
  4. sudo mv /opt/localbak /opt/local
  5. 之后,ruby安装与MacPorts一起正常工作,并且没有从MacPorts加载libssl文件。