我最近将我的系统更新到Ubuntu 18.04 LTS,从那时起,Ruby版本似乎已经更新到2.5.问题在于,在尝试部署使用Capistrano的项目时,它现在会抱怨找不到Ruby 2.3.
它在运行rvm install 2.3时尝试安装的版本是2.3.4,显示的第一个错误是“Error running’__rvm_make -j4’”.我尝试删除RVM并再次安装,但没有解决这个问题.日志是一个巨大的文件,它什么也没告诉我.
然后,我尝试使用rbenv,这也会导致错误:
Installing ruby-2.3.4... BUILD Failed (Ubuntu 18.04 using ruby-build 20180424) Inspect or clean up the working tree at /tmp/ruby-build.20180429172721.16258 Results logged to /tmp/ruby-build.20180429172721.16258.log Last 10 log lines: installing default nkf libraries linking shared-object objspace.so make[2]: Leaving directory '/tmp/ruby-build.20180429172721.16258/ruby-2.3.4/ext/objspace' linking shared-object pathname.so make[2]: Leaving directory '/tmp/ruby-build.20180429172721.16258/ruby-2.3.4/ext/pathname' linking shared-object nkf.so make[2]: Leaving directory '/tmp/ruby-build.20180429172721.16258/ruby-2.3.4/ext/nkf' make[1]: Leaving directory '/tmp/ruby-build.20180429172721.16258/ruby-2.3.4' uncommon.mk:203: recipe for target 'build-ext' Failed make: *** [build-ext] Error 2
openssl_missing.h:78:35: error: macro "EVP_MD_CTX_create" passed 1 arguments,but takes just 0 EVP_MD_CTX *EVP_MD_CTX_create(void); ^ In file included from /usr/include/openssl/x509.h:23:0,from /usr/include/openssl/x509_vfy.h:17,from openssl_missing.c:15: openssl_missing.h:82:6: error: expected declaration specifiers or ‘...’ before ‘(’ token void EVP_MD_CTX_init(EVP_MD_CTX *ctx); ^ openssl_missing.h:90:6: error: expected declaration specifiers or ‘...’ before ‘(’ token void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx); ^ openssl_missing.c:39:23: error: macro "EVP_MD_CTX_create" passed 1 arguments,but takes just 0 EVP_MD_CTX_create(void) ^ openssl_missing.c:40:1: error: expected ‘=’,‘,’,‘;’,‘asm’ or ‘__attribute__’ before ‘{’ token { ^ openssl_missing.c: In function ‘EVP_MD_CTX_cleanup’: openssl_missing.c:55:27: error: invalid application of ‘sizeof’ to incomplete type ‘EVP_MD_CTX {aka struct evp_md_ctx_st}’ memset(ctx,sizeof(EVP_MD_CTX)); ^~~~~~~~~~ In file included from /usr/include/openssl/x509.h:23:0,from openssl_missing.c:15: openssl_missing.c: At top level: openssl_missing.c:63:1: error: expected declaration specifiers or ‘...’ before ‘(’ token EVP_MD_CTX_destroy(EVP_MD_CTX *ctx) ^ openssl_missing.c:72:1: error: expected declaration specifiers or ‘...’ before ‘(’ token EVP_MD_CTX_init(EVP_MD_CTX *ctx) ^ openssl_missing.c: In function ‘HMAC_CTX_init’: openssl_missing.c:82:25: error: dereferencing pointer to incomplete type ‘HMAC_CTX {aka struct hmac_ctx_st}’ EVP_MD_CTX_init(&ctx->i_ctx); ^ openssl_missing.c: In function ‘HMAC_CTX_cleanup’: openssl_missing.c:95:27: error: invalid application of ‘sizeof’ to incomplete type ‘HMAC_CTX {aka struct hmac_ctx_st}’ memset(ctx,sizeof(HMAC_CTX)); ^~~~~~~~ Makefile:301: recipe for target 'openssl_missing.o' Failed make[2]: *** [openssl_missing.o] Error 1 make[2]: Leaving directory '/home/gabriel/Downloads/ruby-2.3.7/ext/openssl' exts.mk:212: recipe for target 'ext/openssl/all' Failed make[1]: *** [ext/openssl/all] Error 2 make[1]: Leaving directory '/home/gabriel/Downloads/ruby-2.3.7' uncommon.mk:203: recipe for target 'build-ext' Failed make: *** [build-ext] Error 2
安装它有什么作用?或者不可能再安装这些旧版本?
我有同样的问题,虽然看起来问题是在gcc中,在我的情况下问题是在libssl-dev中,这是帮助我的:
sudo apt purge libssl-dev && sudo apt install libssl1.0-dev
我用rbenv.如果使用rvm,运行上一个命令后可能遇到问题:
/usr/share/rvm/scripts/base: No such file or directory
我建议尝试rbenv.安装libssl1.0-dev后,一切都完美无瑕.