3

コアラの宝石を使用してHTTPを介して通信する場合、Rubyはセグフォールトを継続します。

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

私は次のことを試しました:

  • which -a rubyMacPortsを介して複数のルビーを表示した実行。だから私はそれらを削除し、同じコマンドを再度実行するとのみが返されます/usr/bin/ruby
  • MacPortsバージョンのPostgreSQLを削除し、代わりにHomebrewを使用してインストールしました(MacPortsを使用すると、独自のバージョンのOpenSSLがインストールされます)
  • ランニングopenssl versionリターンOpenSSL 1.0.0g 18 Jan 2012
  • RVMからRuby1.9.3を削除し、以下のLucianoの方法を試しましたが機能しませんでした。
  • また、RVMから1.9.3を再インストールし、 returns--with-openssl-dir=/opt/local以来指定してみましたwhich openssl/opt/local/bin/openssl
  • RVMを再インストールしました(現在はバージョン1.10.2になっています/Users/pawel/.rvm/bin/rvm
  • Ruby 1.9.3-p125にアップグレードし、1.9.2も試してみました
  • 私はここの指示に従いました:http://www.christopherirish.com/2011/09/02/ruby-1-9-2-segmentation-fault-and-openssl/(これは実際には私の上記の手順です)。クリストファーの以前の投稿もここで読んだ。
  • 私のプロジェクトディレクトリで次のコマンドを実行すると、期待どおりの結果が得られ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

他に何ができるか、または見逃したことについて、もう少しアイデアが必要です。

4

3 に答える 3

7

これと同じセグメンテーション違反エラーも発生しますが、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が言ったように、私は間違った場所にコメントを書きました。今、私はそれを応答で編集しています。;-)
于 2012-01-25T14:18:51.580 に答える
2

問題はHomebrewとMacPortsが競合していることのようだったので、MacPortsを削除し、すべてのパッケージと/opt/local/ディレクトリを削除しました。これにより、HomebrewにPostgreSQLがインストールされているため、PGgemで問題が発生しました。

そこで、Postgresの数式を削除してから再インストールし、Homebrewを使用してOpenSSLのインストールを行いました。

その後、RVMを展開し、RVMとRubiesを再度インストールし(この手順が必要かどうかはわかりません)、最終的には機能します。

于 2012-02-20T10:14:27.200 に答える
0

私もこの問題に遭遇しましたが、別の解決策を使用しました。これがエラーの完全なスタックトレースです

公式のバグレポートは次のとおりです。http://bugs.ruby-lang.org/issues/6184スタックトレースの下の応答は非常に役に立ちました。

OS Xのデフォルトのopensslを使用している場合->brew install opensslインストールされたopensslを使用してビルドし、再試行してください。

ユーザーがインストールしたopensslを使用している場合->OSXのデフォルトのsslでビルドして、再試行してください。

これは、最近MacPortsにインストールされたreadlineライブラリがrubyのインストールを壊したときの問題に似ているように聞こえました。壊れたrubyインストールで次のスクリプトを実行すると、MacPortsopenssllibがロードされていることがわかりました。

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

/opt/local解決策は、 rubyのインストール中にMacPortsを一時的に移動することでした。

  1. MacPortsファイルにアクセスしているすべてのプロセスを終了します。で実行されているものを確認できます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ファイルをロードしませんでした。

于 2012-03-25T08:53:01.577 に答える