2016-12-18 9 views
-1

Я установил Linux Mint 18 на виртуальную машину под Windows. Когда я пытаюсь установить некоторые рубины, я продолжаю получать ошибку в одной и той же точке процесса. Я использую ruby-install, но попытался Ruby-build также с теми же результатами. Наверное, они в основном делают то же самое.OpenSSL ошибка компиляции установки Ruby on Mint 18

Мне нужно установить ruby ​​1.9.3 для работы над старым проектом, и он не работает, как p448, так и p551. Некоторые Ruby 2.x также не работают. Я получил 2.1.9p490 для компиляции полностью.

Следуя другим советам, которые я нашел, я гарантировал, что openssl и libssl-dev установлены и в их последних версиях. Может ли кто-нибудь сказать мне, что происходит и как исправить?

Вот где он не:

compiling ossl_ssl.c 
ossl_ssl.c:116:27: error: ‘SSLv3_method’ undeclared here (not in a function) 
    OSSL_SSL_METHOD_ENTRY(SSLv3), 
         ^
ossl_ssl.c:106: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:117:27: error: ‘SSLv3_server_method’ undeclared here (not in a function) 
    OSSL_SSL_METHOD_ENTRY(SSLv3_server), 
         ^
ossl_ssl.c:106: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:118:27: error: ‘SSLv3_client_method’ undeclared here (not in a function) 
    OSSL_SSL_METHOD_ENTRY(SSLv3_client), 
         ^
ossl_ssl.c:106: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: In function ‘ossl_sslctx_session_new_cb’: 
ossl_ssl.c:382:35: warning: variable ‘ret_obj’ set but not used [-Wunused-but-set-variable] 
    VALUE ary, ssl_obj, sess_obj, ret_obj; 
           ^
ossl_ssl.c: In function ‘ossl_sslctx_session_remove_cb’: 
ossl_ssl.c:431:38: warning: variable ‘ret_obj’ set but not used [-Wunused-but-set-variable] 
    VALUE ary, sslctx_obj, sess_obj, ret_obj; 
            ^
ossl_ssl.c: In function ‘ssl_servername_cb’: 
ossl_ssl.c:508:25: warning: variable ‘ret_obj’ set but not used [-Wunused-but-set-variable] 
    VALUE ary, ssl_obj, ret_obj; 
         ^
Makefile:269: recipe for target 'ossl_ssl.o' failed 
make[2]: *** [ossl_ssl.o] Error 1 
make[2]: Leaving directory '/usr/local/src/ruby-1.9.3-p448/ext/openssl' 
exts.mk:126: recipe for target 'ext/openssl/all' failed 
make[1]: *** [ext/openssl/all] Error 2 
make[1]: Leaving directory '/usr/local/src/ruby-1.9.3-p448' 
uncommon.mk:178: recipe for target 'build-ext' failed 
make: *** [build-ext] Error 2 
!!! Compiling ruby 1.9.3-p448 failed! 

ответ

0

Я попытался выяснить это в течение нескольких часов и нашел ответ сразу после того, как я отправил его. Надеюсь, это помогает кому-то другому.

Были проблемы между некоторыми версиями Ruby и некоторыми версиями OpenSSL. Исправить это, чтобы найти патч для версии Ruby, которую вы пытаетесь установить. Я нашел патчи для многих версий, отличных от 1.9.3 (что мне было нужно), чтобы они были там. (Я попробовал их в любом случае, но исправление всегда не срабатывало при попытке установить 1.9.3.)

Наконец-то нашел правильный патч для 1.9.3 в этом обсуждении на форумах archlinux.

https://www.reddit.com/r/archlinux/comments/49bw8j/rvm_fails_to_compile_ruby_with_openssl_102g3/

Обсуждение приводит к правильным патч здесь:

https://gist.github.com/anonymous/679228bc324d6fdd3074

Скачать патч и затем применять его как при компиляции с установщиком рубинового выбора. У всех есть переключатели для применения патча.

С помощью этого патча я смог успешно установить ruby-1.9.3-p551 в свою систему.