私は最近、システムを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
ログファイルには、愚かな巨大なログファイルもあります。
次の試みはソースからインストールすることで、フォルダ内でmake
を実行した後、エラーが発生しました:
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
それをインストールするために何をすべきですか?または、これらの古いバージョンをインストールすることはもうできませんか?
私は同じ問題を抱えていましたが、問題は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
をインストールした後、すべてが完璧でした。
Rvm rvm get head
を更新することでその問題を解決しました
RVMでも動作するようになりました:
1. Sudo apt purge libssl-dev && Sudo apt install libssl1.0-dev 2. rvm install 2.3.5 --autolibs=disable
RVMの依存関係を手動でインストールする必要があります。そうしないと、autolibが有効になっていると、RVMはシステムの依存関係とlibssl-dev(最初の手順でダウングレードしたもの)の更新を試みます。依存関係を手動でインストールしたくない場合は、Ruby autolibsを有効にしてインストールを試みることができます。この時点で依存関係がインストールされているため、ステップ1。
同様の問題があります。どうやらRubyバージョン<2.3はUbuntuの最新バージョンに付属するopenssl 1.1と互換性がありません。ここで ArchLinux の解決策を見つけました。 Ruby正常にコンパイルされましたが、Railsで多くのメモリバグがありました。その後、今の私のユニークなソリューションはuse Ruby> 2.4他の解決策が見つかるまで。
cd ~/src
wget https://www.openssl.org/source/openssl-1.0.2s.tar.gz
tar xvzf openssl-1.0.2s.tar.gz
cd openssl-1.0.2s
mkdir ~/.rubies/openssl-1.0.2s
./config --prefix=$HOME/.rubies/openssl-1.0.2s --shared
make
make install
Ruby_CONFIGURE_OPTS=--with-openssl-dir=$HOME/.rubies/openssl-1.0.2s rbenv install 2.3.1
私のために働いた