ruby - archlinux rbenv



未定義シンボル:SSLv3_method-.../openssl.soとRubyとArchLinux (1)

最近のArchLinuxのOpenSSLアップデートはRubyを壊しました。なぜなら後者はSSLv3が前者によってサポートされているからです。 OpenSSLを使用するRubyコードは、以下のようなエラーで終了すると問題を明らかにするでしょう:

openssl.so: undefined symbol: SSLv3_method - .../openssl.so (LoadError)

私はRVMで複数のバージョンのRubyを使用しており、そのすべてが問題になっています。

問題があるOpenSSLのバージョンは1.0.2hが、 1.0.2gで導入されたと1.0.2gます。 バージョン1.0.2f動作します。

OpenSSLをダウングレードすることなく、これをどのように克服することができるのでしょうか?


問題は、 このコミットの時点で、SSLv3をサポートしていないArchLinux OpenSSLパッケージが構築されていることが原因です。 私は、Ubuntuのような他のディストリビューションでも同様のことが行われていると信じています。

RVM環境のソリューションは、それらを再構築するRubyを再インストールすることです(最新のrvmに更新することもできます)。

$ rvm get head        # optional, if you want to!
$ rvm reinstall all   # or a specifc ruby version instead of 'all'

しかし、古いルビーは次のようなコンパイルエラーで失敗するでしょう:

Error running '__rvm_make -j1'
ossl_ssl.c:143:27: error: SSLv3_client_method undeclared here (not in a function)

これは、古いRubyをビルドできるようにするRubyパッチのインストールを提案しているRVMチームと議論ています。

$ curl https://github.com/ruby/ruby/commit/801e1fe46d83c856844ba18ae4751478c59af0d1.diff > openssl.patch
$ rvm install --patch ./openssl.patch 1.9.3-p194

私はこのパッチでruby-1.9.3-p194ruby-2.0.0-p247ruby-2.2.1うまく構築しました。





archlinux