天天看点

deepin使用rvm安装ruby出现make: *** [build-ext] Error 2错误

ruby是很怪的东西,我之前也成功安装了几次,重新安装的deepin又无法安装,出现错误了,百撕不得骑姐!!啊啊啊!!

[email protected]:~# rvm install 2.1.4
Searching for binary rubies, this might take some time.
No binary rubies available for: debian//x86_64/ruby-.
Continuing with compilation. Please read 'rvm help mount' to get more information on binary rubies.
Checking requirements for debian.
Requirements installation successful.
Installing Ruby from source to: /usr/local/rvm/rubies/ruby-, this may take a while depending on your cpu(s)...
ruby- - #downloading ruby-2.1.4, this may take a while depending on your connection...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
                                      --:--:-- --:--:-- --:--:--     0
curl: () The requested URL returned error:  Not Found
The requested url does not exist(): 'http://ruby.taobao.org/mirrors/ruby/2.1/ruby-2.1.4.tar.bz2'
Checking fallback: http://ftp.ruby-lang.org/pub/ruby//ruby-.tar.bz2
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
 M   M            k        ::  :: --:--:-- 86209
ruby- - #extracting ruby-2.1.4 to /usr/local/rvm/src/ruby-2.1.4....
ruby- - #configuring.....................................................
ruby- - #post-configuration..
ruby- - #compiling....................................................................................
Error running '__rvm_make -j1',
showing last  lines of /usr/local/rvm/log/_ruby-/make.log
ossl_ssl.c::: error: ‘SSLv3_client_method’ undeclared here (not in a function)
     OSSL_SSL_METHOD_ENTRY(SSLv3_client),
                           ^
ossl_ssl.c::: note: in definition of macro ‘OSSL_SSL_METHOD_ENTRY’
 #define OSSL_SSL_METHOD_ENTRY(name) { #name, (SSL_METHOD *(*)(void))name##_method }
                                                                     ^
Makefile:: recipe for target 'ossl_ssl.o' failed
make[]: *** [ossl_ssl.o] Error 
make[]: Leaving directory '/usr/local/rvm/src/ruby-2.1.4/ext/openssl'
exts.mk:: recipe for target 'ext/openssl/all' failed
make[]: *** [ext/openssl/all] Error 
make[]: Leaving directory '/usr/local/rvm/src/ruby-2.1.4'
uncommon.mk:: recipe for target 'build-ext' failed
make: *** [build-ext] Error 
++ return 
There has been an error while running make. Halting the installation.
           

于是去看/usr/local/rvm/log/1453860140_ruby-2.1.4/make.log最后的15行

ossl_ssl.c::: note: in definition of macro ‘OSSL_SSL_METHOD_ENTRY’
 #define OSSL_SSL_METHOD_ENTRY(name) { #name, (SSL_METHOD *(*)(void))name##_method }
                                                                     ^
ossl_ssl.c::: error: ‘SSLv3_client_method’ undeclared here (not in a function)
     OSSL_SSL_METHOD_ENTRY(SSLv3_client),
                           ^
ossl_ssl.c::: note: in definition of macro ‘OSSL_SSL_METHOD_ENTRY’
 #define OSSL_SSL_METHOD_ENTRY(name) { #name, (SSL_METHOD *(*)(void))name##_method }
                                                                     ^
Makefile:: recipe for target 'ossl_ssl.o' failed
make[]: *** [ossl_ssl.o] Error 
make[]: Leaving directory '/usr/local/rvm/src/ruby-2.1.4/ext/openssl'
exts.mk:: recipe for target 'ext/openssl/all' failed
make[]: *** [ext/openssl/all] Error 
make[]: Leaving directory '/usr/local/rvm/src/ruby-2.1.4'
uncommon.mk:: recipe for target 'build-ext' failed
make: *** [build-ext] Error 
++ return 
           

看这样应该是openssl的问题,于是我用uncommon.mk:180: recipe for target ‘build-ext’ fail 去外网搜,在S O找到了解决方法,应该能解决大部分的问题,但是我的不行

rvm pkg install openssl
rvm install  --with-openssl-dir=$HOME/.rvm/usr
           

我重启之后再安装就变这样

root@kelly-pc:~# rvm install 2.2.1
Searching for binary rubies, this might take some time.
Found remote file https://rvm_io.global.ssl.fastly.net/binaries/debian//x86_64/ruby-..tar.bz2
Checking requirements for debian.
Requirements installation successful.
ruby-. - #configure
ruby-. - #download
** Resuming transfer from byte position 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
 k   k                   ::  :: --:--:--  k
No checksum for downloaded archive, recording checksum in user configuration.
ruby-. - #validate archive
ruby-. - #extract
ruby-. - #validate binary
ruby-. - #setup
ruby-. - #gemset created /usr/local/rvm/gems/ruby-2.2.1@global
ruby-. - #importing gemset /usr/local/rvm/gemsets/global.gems..............................
ruby-. - #generating global wrappers........
ruby-. - #gemset created /usr/local/rvm/gems/ruby-2.2.1
ruby-. - #importing gemsetfile /usr/local/rvm/gemsets/default.gems evaluated to empty gem list
ruby-. - #generating default wrappers........
           

于是搜No checksum for downloaded archive, recording checksum in user configuration. 用下面代码安装

还是一样,想哭。看来还是ssl的补丁问题,搜索recipe for target ‘ossl_ssl.o’ failed

终于github上有一老兄帮解决了,如下:

wget https://github.com/ruby/ruby/commit/fe46d83c856844ba18ae4751478c59af0d1.diff -O openssl.patch
rvm install --patch ./openssl.patch 
           

终于,看我的!

[email protected]:~# rvm install --patch ./openssl.patch 2.2.1
ruby- - #removing src/ruby-2.2.1..
Checking requirements for debian.
Requirements installation successful.
Installing Ruby from source to: /usr/local/rvm/rubies/ruby-, this may take a while depending on your cpu(s)...
ruby- - #downloading ruby-2.2.1, this may take a while depending on your connection...
ruby- - #extracting ruby-2.2.1 to /usr/local/rvm/src/ruby-2.2.1....
ruby- - #applying patch /root/./openssl.patch.
ruby- - #applying patch /usr/local/rvm/patches/ruby/2.2.1/fix_installing_bundled_gems.patch.
ruby- - #configuring.........................................................
ruby- - #post-configuration..
ruby- - #compiling................................................................................
ruby- - #installing................
ruby- - #making binaries executable..
ruby- - #downloading rubygems-2.4.8
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  k    k                   ::  :: --:--:-- 98160
No checksum for downloaded archive, recording checksum in user configuration.
ruby- - #extracting rubygems-2.4.8....
ruby- - #removing old rubygems.........
ruby- - #installing rubygems-2.4.8......................
ruby- - #gemset created /usr/local/rvm/gems/[email protected]
ruby- - #importing gemset /usr/local/rvm/gemsets/global.gems................................................
ruby- - #generating global wrappers........
ruby- - #gemset created /usr/local/rvm/gems/ruby-2.2.1
ruby- - #importing gemsetfile /usr/local/rvm/gemsets/default.gems evaluated to empty gem list
ruby- - #generating default wrappers........
ruby- - #adjusting #shebangs for (gem irb erb ri rdoc testrb rake).
Install of ruby- - #complete 
Ruby was built without documentation, to build it run: rvm docs generate-ri
           

一早上的时间就酱紫!