wake-up-neo.com

Die Installation von Ruby 2.3.x unter Ubuntu 18.04 verursacht am Ende des Installationsvorgangs einen Fehler

Ich habe vor kurzem mein System auf Ubuntu 18.04 LTS aktualisiert, und seitdem scheint die Ruby-Version auf 2.5 aktualisiert worden zu sein. Das Problem ist, dass beim Versuch, ein Projekt zu implementieren, das Capistrano verwendet, sich jetzt beschwert, dass Ruby 2.3 nicht gefunden wurde.

Die Version, die bei der Ausführung von rvm install 2.3 installiert werden soll, ist 2.3.4. Der erste angezeigte Fehler ist "Error running '__rvm_make -j4'". Ich habe versucht, RVM zu entfernen und erneut zu installieren, aber das löst nichts. Das Protokoll ist eine riesige Datei, die mir nichts sagt.

Dann habe ich versucht, rbenv zu verwenden, was ebenfalls einen Fehler verursacht:

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

Die Protokolldatei hat auch eine dumme riesige Protokolldatei.

Der nächste Versuch bestand darin, von der Quelle zu installieren, die nach dem Ausführen von make innerhalb des Ordners den Fehler:

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

Was ist zu tun, um es zu installieren? Oder ist es nicht mehr möglich, diese alten Versionen zu installieren?

9
gamofe

Ich hatte dasselbe Problem, obwohl es schien, dass das Problem in gcc war. In meinem Fall war das Problem in libssl-dev.

Sudo apt purge libssl-dev && Sudo apt install libssl1.0-dev

Ich benutze rbenv. Wenn Sie rvm verwenden, kann nach dem Ausführen des vorherigen Befehls ein Problem auftreten:

/usr/share/rvm/scripts/base: No such file or directory

Ich empfehle rbenv. Nach der Installation von libssl1.0-dev war alles einwandfrei.

30
guitarman

Behebung des Problems durch Aktualisieren von rvm rvm get head

4
SERGHII

Habe es auch mit RVM gearbeitet:

1. Sudo apt purge libssl-dev && Sudo apt install libssl1.0-dev 2. rvm install 2.3.5 --autolibs=disable

Sie müssen RVM-Abhängigkeiten manuell installieren. Andernfalls versucht RVM bei aktivierten Autolibs, Systemabhängigkeiten und auch libssl-dev (das Sie im ersten Schritt heruntergestuft haben) zu aktualisieren. Wenn Sie Abhängigkeiten nicht manuell installieren möchten, können Sie versuchen, Ruby mit aktivierten Autolibs zu installieren. Die Installation schlägt fehl. Zu diesem Zeitpunkt haben Sie Abhängigkeiten installiert, so dass Sie libssl herunterstufen können, indem Sie alle Schritte ab Schritt 1 wiederholen.

2

Ich habe ein ähnliches Problem. Anscheinend ist die Ruby-Version <2.3 nicht kompatibel mit openssl 1.1, das mit den neuesten Ubuntu-Versionen geliefert wird. Hier fand ich eine Lösung für ArchLinux , ich habe diese Lösung ausprobiert und Ruby gut kompiliert, aber ich hatte eine Menge Speicherfehler in Rails. Dann ist Ruby> 2.4 meine einzige Lösung, bis ich eine andere Lösung gefunden habe.

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

arbeitete für mich

0
Stefan