干净安装后持久的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
。
- 退出正在访问MacPorts文件的所有进程。 您可以看到哪些正在运行
sudo lsof | grep /opt/local
sudo lsof | grep /opt/local
。 -
sudo mv /opt/local /opt/localbak
- 打开一个新终端,然后编译并安装Ruby
-
sudo mv /opt/localbak /opt/local
之后,ruby安装与MacPorts一起正常工作,并且没有从MacPorts加载libssl文件。
- 如何使用Ruby在文本文件中搜索完全匹配的字符串?
- 使用Net :: HTTP的块forms的HTTPS请求 – 是否可能?
- 使用Ruby将XML请求发布到Web服务器
- Ruby未定义的方法`bytesize’用于#
- Net :: HTTP对HTTPS请求的响应非常慢
- OpenSSL :: SSL :: SSLError:SSL_connect SYSCALL返回= 5 errno = 0 state = SSLv3读取服务器hello A
- 使用OpenURI或net / http进行Ruby代理身份validationGET / POST
- 在RoR中,如何从“无法打开TCP连接…(一般SOCKS服务器故障)”错误中恢复?
- 调整Nokogiri连接的超时