干净安装后持久的Ruby segfaulting

当使用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显示多个ruby。 所以我删除了那些并再次运行相同的命令只返回/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/ (实际上是我上面的步骤)。 我也读过克里斯托弗先前的post。
  • 在我运行以下项目的项目目录中,我得到了预期的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

关于我还能尝试什么,或者我错过了什么,我需要更多的想法。

我也遇到了相同的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所说,我在错误的地方写了评论。 现在我正在用响应编辑它。 😉

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

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

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

我也遇到了这个问题,但使用了不同的解决方案。 这是错误的完整堆栈跟踪 。

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

如果您正在使用OS X的默认openssl – >执行brew install openssl并使用已brew install openssl进行构建,请再试一次。

如果您正在使用由用户安装的openssl – >使用OS X默认ssl进行构建,请重试。

最近,当MacPorts中安装的readline库破坏了ruby安装时,这听起来类似于我的问题。 在破损的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 sudo lsof | grep /opt/local
  2. sudo mv /opt/local /opt/localbak
  3. 打开一个新终端,然后编译并安装Ruby
  4. sudo mv /opt/localbak /opt/local

之后,ruby安装与MacPorts一起正常工作,并且没有从MacPorts加载libssl文件。