无法构建ruby 2.2.2 - 各种SSLv3_方法未声明

时间:2016-11-09 14:54:59

标签: ruby rvm ubuntu-16.04

我使用rvm安装Ruby,但是我有一个我不明白的错误。这是我在编译过程中在控制台中获得的内容:

derby git:(master) rvm install ruby-2.2.2
ruby-2.2.2 - #removing src/ruby-2.2.2 - please wait
Searching for binary rubies, this might take some time.
No binary rubies available for: ubuntu/16.04/x86_64/ruby-2.2.2.
Continuing with compilation. Please read 'rvm help mount' to get more information on binary rubies.
Checking requirements for ubuntu.
Requirements installation successful.
Installing Ruby from source to: /usr/share/rvm/rubies/ruby-2.2.2, this may take a while depending on your cpu(s)...
ruby-2.2.2 - #downloading ruby-2.2.2, this may take a while depending on your connection...
ruby-2.2.2 - #extracting ruby-2.2.2 to /usr/share/rvm/src/ruby-2.2.2 - please wait
ruby-2.2.2 - #applying patch /usr/share/rvm/patches/ruby/2.2.2/fix_installing_bundled_gems.patch - please wait
ruby-2.2.2 - #configuring - please wait
ruby-2.2.2 - #post-configuration - please wait
ruby-2.2.2 - #compiling - please wait
Error running '__rvm_make -j8',
showing last 15 lines of /home/krex/.rvm/log/1478709580_ruby-2.2.2/make.log
compiling constants.c
make[2]: Leaving directory '/usr/share/rvm/src/ruby-2.2.2/ext/openssl'
exts.mk:202: recipe for target 'ext/openssl/all' failed
make[1]: *** [ext/openssl/all] Error 2
make[1]: *** Waiting for unfinished jobs....
linking shared-object zlib.so
make[2]: Leaving directory '/usr/share/rvm/src/ruby-2.2.2/ext/zlib'
linking shared-object socket.so
make[2]: Leaving directory '/usr/share/rvm/src/ruby-2.2.2/ext/socket'
linking shared-object ripper.so
make[2]: Leaving directory '/usr/share/rvm/src/ruby-2.2.2/ext/ripper'
make[1]: Leaving directory '/usr/share/rvm/src/ruby-2.2.2'
uncommon.mk:189: recipe for target 'build-ext' failed
make: *** [build-ext] Error 2
+__rvm_make:0> return 2
There has been an error while running make. Halting the installation.

我拥有的openssl版本是:OpenSSL 1.0.2j 26 Sep 2016

log file /home/krex/.rvm/log/1478709580_ruby-2.2.2/make.log包含此编译错误:

compiling ossl_x509cert.c
ossl_ssl.c:141:27: error: ‘SSLv3_method’ undeclared here (not in a function)
     OSSL_SSL_METHOD_ENTRY(SSLv3),
                           ^
ossl_ssl.c:119:69: note: in definition of macro ‘OSSL_SSL_METHOD_ENTRY’
 #define OSSL_SSL_METHOD_ENTRY(name) { #name, (SSL_METHOD *(*)(void))name##_method }
                                                                     ^
ossl_ssl.c:142:27: error: ‘SSLv3_server_method’ undeclared here (not in a function)
     OSSL_SSL_METHOD_ENTRY(SSLv3_server),
                           ^
ossl_ssl.c:119:69: note: in definition of macro ‘OSSL_SSL_METHOD_ENTRY’
 #define OSSL_SSL_METHOD_ENTRY(name) { #name, (SSL_METHOD *(*)(void))name##_method }
                                                                     ^
ossl_ssl.c:143:27: error: ‘SSLv3_client_method’ undeclared here (not in a function)
     OSSL_SSL_METHOD_ENTRY(SSLv3_client),
                           ^
ossl_ssl.c:119:69: note: in definition of macro ‘OSSL_SSL_METHOD_ENTRY’
 #define OSSL_SSL_METHOD_ENTRY(name) { #name, (SSL_METHOD *(*)(void))name##_method }
                                                                     ^
Makefile:293: recipe for target 'ossl_ssl.o' failed
make[2]: *** [ossl_ssl.o] Error 1

我尝试了这个问题的解决方案,但这对以下方面都没有帮助: Rbenv ruby 2.2.2 install fail Ubuntu 14.04

如何解决此错误并安装Ruby?

1 个答案:

答案 0 :(得分:2)

rbenv注意到类似的问题:Cannot install Ruby 2.2.3 in ubuntu 14.04

当使用某些版本的openssl构建时,这似乎是Ruby 2.2.2和2.2.3的问题。如果可以,请更改为Ruby 2.2的更高版本。最新版本现在是2.2.5。

如果你必须使用Ruby 2.2.2,仍然有希望。对于Ruby 2.2.2,rbenv issue建议a patch;一些用户说它适合他们。尝试使用该补丁安装Ruby:

rvm install ruby-2.2.2 --patch https://gist.githubusercontent.com/mislav/055441129184a1512bb5/raw