2016-05-21 71 views
7

Un recente aggiornamento di OpenSSL su ArchLinux ha interrotto Ruby perché quest'ultimo dipende da SSLv3 supportato dal primo. codice Ruby che utilizza OpenSSL rivelerà il problema quando si terminano con un errore come di seguito:Simbolo non definito: SSLv3_method - .../openssl.so con Ruby e ArchLinux

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

Io uso più versioni di rubino con RVM e il problema aplies a tutti loro.

La versione OpenSSL con cui ho riscontrato il problema è 1.0.2h ma credo che sia stata introdotta con 1.0.2g. La versione 1.0.2f funziona correttamente.

Come può essere risolto il problema di compatibilità (senza downgradng OpenSSL)?

+0

Stessa distribuzione, stesso problema. – jayant

risposta

13

Il problema è causato dal pacchetto ArchLinux OpenSSL in fase di creazione senza supporto SSLv3, a partire da this commit. Credo che una cosa simile sia stata fatta in altre distro come Ubuntu.

La soluzione in un ambiente RVM è quello di reinstallare i rubini che li ricostruirà (si potrebbe anche voler aggiornare all'ultima RVM):

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

Tuttavia, rubini più anziani saranno ancora esito negativo con un errore di compilazione in questo modo:

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

questo è stato discussed con il team di RVM che hanno suggerito l'installazione this Ruby patch che permette ai rubini più anziani di costruire:

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

Ho creato con successo questa patch ruby-1.9.3-p194, ruby-2.0.0-p247 e ruby-2.2.1.

+0

Se qualcun altro deve costruire Ruby 1.8 alle stesse condizioni, ecco una patch che funziona: https://gist.githubusercontent.com/sigmike/34fe96a35cd92978fc2caa4058de6cb5/raw/6672f7b5350518ea05d1f33463d42b464d959bf3/ruby1_8_ssl_fix.diff –

+0

Può confermare che la patch di @ MichaëlWitrant funziona anche per 1.9.2-p290 – numbers1311407