2016-05-21 10 views
7

Ein kürzlich veröffentlichtes OpenSSL-Update auf ArchLinux hat Ruby ruiniert, weil letzteres davon abhängt, dass SSLv3 von ersterem unterstützt wird. Ruby-Code, die OpenSSL verwendet wird, das Problem zeigen, wenn sie wie die unten mit einem Fehler beenden:Undefiniertes Symbol: SSLv3_method - .../openssl.so mit Ruby und ArchLinux

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

ich mehrere Versionen von Ruby mit RVM und das Problem aplies auf alle von ihnen.

Die OpenSSL Version Ich habe das Problem mit ist 1.0.2h aber ich glaube, es wurde mit 1.0.2g eingeführt. Version 1.0.2f funktioniert gut.

Wie kann dieses Kompatibilitätsproblem überwunden werden (ohne downgradng OpenSSL)?

+0

Gleiche Distribution, dasselbe Problem. – jayant

Antwort

13

Das Problem wird durch das ArchLinux OpenSSL-Paket verursacht, das ohne SSLv3-Unterstützung erstellt wird, wie von this commit. Ich glaube, dass eine ähnliche Sache in anderen Distributionen wie Ubuntu gemacht wurde.

Die Lösung in einer RVM-Umgebung ist Ihr Rubine neu zu installieren, die sie wieder aufbauen (Sie können auch zu den neuesten rvm aktualisieren):

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

jedoch ältere Rubine noch mit einem Compiler-Fehler fehlschlagen wie folgt aus:

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

Dieses discussed mit dem RVM-Team war die this Ruby patch vorgeschlagen haben, installieren, zu bauen ältere Rubine erlaubt:

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

Ich baute ruby-1.9.3-p194, ruby-2.0.0-p247 und ruby-2.2.1 erfolgreich mit diesem Patch.

+0

Wenn jemand anderes Ruby 1.8 unter den gleichen Bedingungen zu bauen hat hier ein Patch, das funktioniert: https://gist.githubusercontent.com/sigmike/34fe96a35cd92978fc2caa4058de6cb5/raw/6672f7b5350518ea05d1f33463d42b464d959bf3/ruby1_8_ssl_fix.diff –

+0

Kann das Patch bestätigt von @ MichaëlWitrant auch funktioniert für 1.9.2-p290 – numbers1311407