web-dev-qa-db-ja.com

Ubuntu 18.04にRuby 2.3.xをインストールすると、インストールプロセスの終了までにエラーが発生します

私は最近、システムを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

それをインストールするために何をすべきですか?または、これらの古いバージョンをインストールすることはもうできませんか?

10
gamofe

私は同じ問題を抱えていましたが、問題は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をインストールした後、すべてが完璧でした。

36
guitarman

Rvm rvm get headを更新することでその問題を解決しました

4
SERGHII

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。

4

同様の問題があります。どうやらRubyバージョン<2.3はUbuntuの最新バージョンに付属するopenssl 1.1と互換性がありません。ここで ArchLinux の解決策を見つけました。 Ruby正常にコンパイルされましたが、Railsで多くのメモリバグがありました。その後、今の私のユニークなソリューションはuse Ruby> 2.4他の解決策が見つかるまで。

0
Armando
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

私のために働いた

0
Stefan