问题描述
我最近将我的系统更新到 Ubuntu 18.04 LTS,从那时起,Ruby 版本似乎已经更新到 2.5.问题是,当尝试部署使用 Capistrano 的项目时,它现在会抱怨未找到 Ruby 2.3.
I recently updated my system to Ubuntu 18.04 LTS, and since then, the Ruby version seems to have updated to 2.5. The issue is that, when attempting to deploy a project that uses Capistrano, it will now complain that Ruby 2.3 was not found.
它在运行 rvm install 2.3
时尝试安装的版本是 2.3.4,显示的第一个错误是Error running '__rvm_make -j4'
".我尝试删除 RVM 并重新安装,但没有解决此问题.日志是一个巨大的文件,它什么也没告诉我.
The version it tries to install when running rvm install 2.3
is 2.3.4, and the first error that is shown is "Error running '__rvm_make -j4'
". I tried removing RVM and installing again, but nothing solves this. The log is an enormous file which tells me nothing.
然后,我尝试使用rbenv
,这也导致错误:
Then, I tried using rbenv
, which also causes an error:
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
日志文件还有一个愚蠢的巨型日志文件.
The log file also has a stupid giant log file.
下一次尝试从源代码安装,在文件夹中运行 make
后,错误:
The next attempt was to install from source, which after running make
within the folder, the error:
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, 0, sizeof(EVP_MD_CTX));
^~~~~~~~~~
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.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, 0, 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
安装它需要做什么?还是无法再安装这些旧版本?
What is it there to be done to install it? Or it isn't possible anymore to install these old versions?
推荐答案
我遇到了同样的问题,虽然看起来问题出在 gcc
中,但在我的例子中问题出在 libssl-dev
,这对我有帮助:
I had a same issue, though it seemed problem was in gcc
, in my case problem was in libssl-dev
, this is what helped me:
sudo apt purge libssl-dev && sudo apt install libssl1.0-dev
我使用 rbenv
.如果你使用 rvm
,你可能会在运行上一个命令后遇到问题:
I use rbenv
. If you use rvm
, you might hit problem after running previous command:
/usr/share/rvm/scripts/base: No such file or directory
我建议尝试 rbenv
.安装libssl1.0-dev
后,一切都完美无瑕.
I recommend trying rbenv
. After installing libssl1.0-dev
, everything was flawless.
这篇关于在 Ubuntu 18.04 上安装 Ruby 2.3.x 在安装过程结束时导致错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!