簡體   English   中英

無法通過 rvm 安裝 ruby,在 ubuntu 22.04 上運行“__rvm_make -j4”時出錯

[英]Can't install ruby via rvm, Error running '__rvm_make -j4' on ubuntu 22.04

我嘗試安裝 ruby 的幾個版本(2.5.5、2.6.6、2.7.4、3.0.0),在所有情況下它都給出了相同的錯誤,當然對於每個版本,在這個例子中我只把版本 2.6.6 的錯誤:

 $ rvm use ruby --install --default 2.6.6
Required ruby-2.6.6 is not installed - installing.
ruby-2.6.6 - #removing src/ruby-2.6.6..
Searching for binary rubies, this might take some time.
No binary rubies available for: ubuntu/22.04/x86_64/ruby-2.6.6.
Continuing with compilation. Please read 'rvm help mount' to get more information on binary rubies.
Checking requirements for ubuntu.
Requirements installation successful.
Installing Ruby from source to: /home/elorat/.rvm/rubies/ruby-2.6.6, this may take a while depending on your cpu(s)...
ruby-2.6.6 - #downloading ruby-2.6.6, this may take a while depending on your connection...
ruby-2.6.6 - #extracting ruby-2.6.6 to /home/elorat/.rvm/src/ruby-2.6.6.....
ruby-2.6.6 - #configuring......................................................................
ruby-2.6.6 - #post-configuration..
ruby-2.6.6 - #compiling..........................................................................................................-
Error running '__rvm_make -j4',
please read /home/elorat/.rvm/log/1652140330_ruby-2.6.6/make.log

There has been an error while running make. Halting the installation.

這是我的工作環境:

 $ rvm --version
rvm 1.29.12-next (master) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io]

 $ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04 LTS
Release:    22.04
Codename:   jammy

更新

我無法放入整個 make.log 文件,因為 Body 被限制為 30000 個字符; make.log 文件的長度為 90138 個字符。 我要放入前 18788 個字符。

這是文件 make.log 的一部分。

[2022-05-10 07:17:47] __rvm_make
__rvm_make () 
{ 
    \make "$@" || return $?
}
current path: /home/elorat/.rvm/src/ruby-2.6.6
GEM_PATH=/home/elorat/.rvm/gems/ruby-2.6.6:/home/elorat/.rvm/gems/ruby-2.6.6@global
PATH=/home/elorat/.rvm/gems/ruby-2.6.6/bin:/home/elorat/.rvm/gems/ruby-2.6.6@global/bin:/home/elorat/.rvm/rubies/ruby-2.6.6/bin:/home/elorat/.rvm/bin:/home/elorat/.nvm/versions/node/v12.22.9/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin
command(2): __rvm_make -j4
++ make -j4
    BASERUBY = echo executable host ruby is required.  use --with-baseruby option.; false
    CC = gcc
    LD = ld
    LDSHARED = gcc -shared
    CFLAGS = -O3 -ggdb3 -Wall -Wextra -Wdeclaration-after-statement -Wdeprecated-declarations -Wduplicated-cond -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wrestrict -Wwrite-strings -Wimplicit-fallthrough=0 -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-packed-bitfield-compat -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wunused-variable -std=gnu99  -fPIC 
    XCFLAGS = -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-overflow -fvisibility=hidden -fexcess-precision=standard -DRUBY_EXPORT -DCANONICALIZATION_FOR_MATHN
    CPPFLAGS =   -I. -I.ext/include/x86_64-linux -I./include -I. -I./enc/unicode/12.1.0 
    DLDFLAGS = -Wl,--compress-debug-sections=zlib -Wl,-soname,libruby.so.2.6  -fstack-protector-strong  
    SOLIBS = -lz -lpthread -lrt -lrt -lgmp -ldl -lcrypt -lm 
    LANG = en_US.UTF-8
    LC_ALL = 
    LC_CTYPE = 
gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

compiling ./main.c
compiling dmydln.c
compiling miniinit.c
compiling dmyext.c
compiling miniprelude.c
making dummy probes.h
compiling ast.c
compiling bignum.c
compiling class.c
compiling compar.c
In file included from ./include/ruby.h:33,
                 from internal.h:15,
                 from class.c:26:
class.c: In function ‘move_refined_method’:
class.c:955:30: warning: taking address of packed member of ‘struct rb_method_definition_struct’ may result in an unaligned pointer value [-Waddress-of-packed-member]
  955 |             RB_OBJ_WRITE(me, &me->def->body.refined.orig_me, NULL);
./include/ruby/ruby.h:1493:75: note: in definition of macro ‘RB_OBJ_WRITE’
 1493 | #define RB_OBJ_WRITE(a, slot, b)       rb_obj_write((VALUE)(a), (VALUE *)(slot), (VALUE)(b), __FILE__, __LINE__)
      |                                                                           ^~~~
compiling compile.c
compile.c: In function ‘update_catch_except_flags’:
compile.c:1291:54: warning: taking address of packed member of ‘struct iseq_catch_table’ may result in an unaligned pointer value [-Waddress-of-packed-member]
 1291 |         const struct iseq_catch_table_entry *entry = &ct->entries[i];
      |                                                      ^~~~~~~~~~~~~~~
compile.c: In function ‘iseq_set_exception_table’:
compile.c:2356:21: warning: taking address of packed member of ‘struct iseq_catch_table’ may result in an unaligned pointer value [-Waddress-of-packed-member]
 2356 |             entry = &table->entries[i];
      |                     ^~~~~~~~~~~~~~~~~~
compiling complex.c
class.c: At top level:
cc1: note: unrecognized command-line option ‘-Wno-self-assign’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-parentheses-equality’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-constant-logical-operand’ may have been intended to silence earlier diagnostics
compiling cont.c
compiling debug.c
compiling debug_counter.c
compiling dir.c
compiling dln_find.c
compiling encoding.c
compiling enum.c
compiling enumerator.c
compiling error.c
compiling eval.c
compiling file.c
compiling gc.c
gc.c: In function ‘mark_current_machine_context’:
gc.c:4377:36: warning: expression does not compute the number of elements in this array; element type is ‘struct __jmp_buf_tag’, not ‘VALUE’ {aka ‘long unsigned int’} [-Wsizeof-array-div]
 4377 |         VALUE v[sizeof(rb_jmp_buf) / sizeof(VALUE)];
      |                                    ^
gc.c:4377:36: note: add parentheses around the second ‘sizeof’ to silence this warning
compiling hash.c
compiling inits.c
compile.c: At top level:
cc1: note: unrecognized command-line option ‘-Wno-self-assign’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-parentheses-equality’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-constant-logical-operand’ may have been intended to silence earlier diagnostics
compiling io.c
compiling iseq.c
iseq.c: In function ‘rb_iseq_mark’:
iseq.c:252:25: warning: taking address of packed member of ‘struct iseq_catch_table’ may result in an unaligned pointer value [-Waddress-of-packed-member]
  252 |                 entry = &table->entries[i];
      |                         ^~~~~~~~~~~~~~~~~~
iseq.c: In function ‘rb_iseq_disasm_recursive’:
iseq.c:2067:58: warning: taking address of packed member of ‘struct iseq_catch_table’ may result in an unaligned pointer value [-Waddress-of-packed-member]
 2067 |             const struct iseq_catch_table_entry *entry = &body->catch_table->entries[i];
      |                                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
iseq.c: In function ‘iseq_iterate_children’:
iseq.c:2200:58: warning: taking address of packed member of ‘struct iseq_catch_table’ may result in an unaligned pointer value [-Waddress-of-packed-member]
 2200 |             const struct iseq_catch_table_entry *entry = &body->catch_table->entries[i];
      |                                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
iseq.c: In function ‘iseq_data_to_ary’:
iseq.c:2710:54: warning: taking address of packed member of ‘struct iseq_catch_table’ may result in an unaligned pointer value [-Waddress-of-packed-member]
 2710 |         const struct iseq_catch_table_entry *entry = &iseq_body->catch_table->entries[i];
      |                                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compiling load.c
compiling marshal.c
gc.c: At top level:
cc1: note: unrecognized command-line option ‘-Wno-self-assign’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-parentheses-equality’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-constant-logical-operand’ may have been intended to silence earlier diagnostics
iseq.c: At top level:
cc1: note: unrecognized command-line option ‘-Wno-self-assign’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-parentheses-equality’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-constant-logical-operand’ may have been intended to silence earlier diagnostics
compiling math.c
making mjit_config.h
compiling mjit_compile.c
compiling node.c
compiling numeric.c
compiling object.c
compiling pack.c
compiling parse.c
compiling proc.c
compiling process.c
compiling random.c
compiling range.c
compiling rational.c
compiling re.c
compiling regcomp.c
compiling regenc.c
compiling regerror.c
compiling regexec.c
compiling regparse.c
compiling regsyntax.c
compiling ruby.c
compiling safe.c
compiling signal.c
compiling sprintf.c
compiling st.c
compiling strftime.c
strftime.c: In function ‘rb_strftime_with_timespec’:
strftime.c:386:39: warning: comparison is always false due to limited range of data type [-Wtype-limits]
  386 |                         if (vtm->wday < 0 || vtm->wday > 6)
      |                                       ^
strftime.c:397:39: warning: comparison is always false due to limited range of data type [-Wtype-limits]
  397 |                         if (vtm->wday < 0 || vtm->wday > 6)
      |                                       ^
compiling string.c
string.c: In function ‘str_replace_shared_without_enc’:
string.c:1189:13: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
 1189 |             char *ptr2 = STR_HEAP_PTR(str2);
      |             ^~~~
string.c: In function ‘rb_str_setbyte’:
string.c:5471:5: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
 5471 |     VALUE v = rb_to_int(value);
      |     ^~~~~
string.c: In function ‘get_reg_grapheme_cluster’:
string.c:8521:9: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
 8521 |         int r = onig_new(&reg_grapheme_cluster, source, source + source_len,
      |         ^~~
strftime.c: At top level:
cc1: note: unrecognized command-line option ‘-Wno-self-assign’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-parentheses-equality’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-constant-logical-operand’ may have been intended to silence earlier diagnostics
compiling struct.c
compiling symbol.c
compiling thread.c
In file included from thread.c:68:
thread_sync.c: In function ‘queue_alloc’:
eval_intern.h:172:64: warning: taking address of packed member of ‘struct rb_queue’ may result in an unaligned pointer value [-Waddress-of-packed-member]
  172 | #define UNALIGNED_MEMBER_PTR(ptr, mem) UNALIGNED_MEMBER_ACCESS(&(ptr)->mem)
eval_intern.h:170:40: note: in definition of macro ‘UNALIGNED_MEMBER_ACCESS’
  170 | # define UNALIGNED_MEMBER_ACCESS(expr) expr
      |                                        ^~~~
thread_sync.c:545:24: note: in expansion of macro ‘UNALIGNED_MEMBER_PTR’
  545 | #define queue_waitq(q) UNALIGNED_MEMBER_PTR(q, waitq)
      |                        ^~~~~~~~~~~~~~~~~~~~
thread_sync.c:590:20: note: in expansion of macro ‘queue_waitq’
  590 |     list_head_init(queue_waitq(q));
      |                    ^~~~~~~~~~~
thread_sync.c: In function ‘queue_fork_check’:
eval_intern.h:172:64: warning: taking address of packed member of ‘struct rb_queue’ may result in an unaligned pointer value [-Waddress-of-packed-member]
  172 | #define UNALIGNED_MEMBER_PTR(ptr, mem) UNALIGNED_MEMBER_ACCESS(&(ptr)->mem)
eval_intern.h:170:40: note: in definition of macro ‘UNALIGNED_MEMBER_ACCESS’
  170 | # define UNALIGNED_MEMBER_ACCESS(expr) expr
      |                                        ^~~~
thread_sync.c:545:24: note: in expansion of macro ‘UNALIGNED_MEMBER_PTR’
  545 | #define queue_waitq(q) UNALIGNED_MEMBER_PTR(q, waitq)
      |                        ^~~~~~~~~~~~~~~~~~~~
thread_sync.c:604:20: note: in expansion of macro ‘queue_waitq’
  604 |     list_head_init(queue_waitq(q));
      |                    ^~~~~~~~~~~
thread_sync.c: In function ‘szqueue_alloc’:
eval_intern.h:172:64: warning: taking address of packed member of ‘struct rb_queue’ may result in an unaligned pointer value [-Waddress-of-packed-member]
  172 | #define UNALIGNED_MEMBER_PTR(ptr, mem) UNALIGNED_MEMBER_ACCESS(&(ptr)->mem)
eval_intern.h:170:40: note: in definition of macro ‘UNALIGNED_MEMBER_ACCESS’
  170 | # define UNALIGNED_MEMBER_ACCESS(expr) expr
      |                                        ^~~~
thread_sync.c:553:27: note: in expansion of macro ‘UNALIGNED_MEMBER_PTR’
  553 | #define szqueue_waitq(sq) UNALIGNED_MEMBER_PTR(sq, q.waitq)
      |                           ^~~~~~~~~~~~~~~~~~~~
thread_sync.c:648:20: note: in expansion of macro ‘szqueue_waitq’
  648 |     list_head_init(szqueue_waitq(sq));
      |                    ^~~~~~~~~~~~~
eval_intern.h:172:64: warning: taking address of packed member of ‘struct rb_szqueue’ may result in an unaligned pointer value [-Waddress-of-packed-member]
  172 | #define UNALIGNED_MEMBER_PTR(ptr, mem) UNALIGNED_MEMBER_ACCESS(&(ptr)->mem)
eval_intern.h:170:40: note: in definition of macro ‘UNALIGNED_MEMBER_ACCESS’
  170 | # define UNALIGNED_MEMBER_ACCESS(expr) expr
      |                                        ^~~~
thread_sync.c:554:27: note: in expansion of macro ‘UNALIGNED_MEMBER_PTR’
  554 | #define szqueue_pushq(sq) UNALIGNED_MEMBER_PTR(sq, pushq)
      |                           ^~~~~~~~~~~~~~~~~~~~
thread_sync.c:649:20: note: in expansion of macro ‘szqueue_pushq’
  649 |     list_head_init(szqueue_pushq(sq));
      |                    ^~~~~~~~~~~~~
thread_sync.c: In function ‘szqueue_ptr’:
eval_intern.h:172:64: warning: taking address of packed member of ‘struct rb_szqueue’ may result in an unaligned pointer value [-Waddress-of-packed-member]
  172 | #define UNALIGNED_MEMBER_PTR(ptr, mem) UNALIGNED_MEMBER_ACCESS(&(ptr)->mem)
eval_intern.h:170:40: note: in definition of macro ‘UNALIGNED_MEMBER_ACCESS’
  170 | # define UNALIGNED_MEMBER_ACCESS(expr) expr
      |                                        ^~~~
thread_sync.c:554:27: note: in expansion of macro ‘UNALIGNED_MEMBER_PTR’
  554 | #define szqueue_pushq(sq) UNALIGNED_MEMBER_PTR(sq, pushq)
      |                           ^~~~~~~~~~~~~~~~~~~~
thread_sync.c:660:24: note: in expansion of macro ‘szqueue_pushq’
  660 |         list_head_init(szqueue_pushq(sq));
      |                        ^~~~~~~~~~~~~
thread_sync.c: In function ‘rb_queue_initialize’:
thread_sync.c:761:24: warning: taking address of packed member of ‘struct rb_queue’ may result in an unaligned pointer value [-Waddress-of-packed-member]
  761 |     RB_OBJ_WRITE(self, &q->que, ary_buf_new());
eval_intern.h:170:40: note: in definition of macro ‘UNALIGNED_MEMBER_ACCESS’
  170 | # define UNALIGNED_MEMBER_ACCESS(expr) expr
      |                                        ^~~~
thread_sync.c:761:5: note: in expansion of macro ‘RB_OBJ_WRITE’
  761 |     RB_OBJ_WRITE(self, &q->que, ary_buf_new());
      |     ^~~~~~~~~~~~
eval_intern.h:172:64: warning: taking address of packed member of ‘struct rb_queue’ may result in an unaligned pointer value [-Waddress-of-packed-member]
  172 | #define UNALIGNED_MEMBER_PTR(ptr, mem) UNALIGNED_MEMBER_ACCESS(&(ptr)->mem)
eval_intern.h:170:40: note: in definition of macro ‘UNALIGNED_MEMBER_ACCESS’
  170 | # define UNALIGNED_MEMBER_ACCESS(expr) expr
      |                                        ^~~~
thread_sync.c:545:24: note: in expansion of macro ‘UNALIGNED_MEMBER_PTR’
  545 | #define queue_waitq(q) UNALIGNED_MEMBER_PTR(q, waitq)
      |                        ^~~~~~~~~~~~~~~~~~~~
thread_sync.c:762:20: note: in expansion of macro ‘queue_waitq’
  762 |     list_head_init(queue_waitq(q));
      |                    ^~~~~~~~~~~
thread_sync.c: In function ‘queue_do_push’:
eval_intern.h:172:64: warning: taking address of packed member of ‘struct rb_queue’ may result in an unaligned pointer value [-Waddress-of-packed-member]
  172 | #define UNALIGNED_MEMBER_PTR(ptr, mem) UNALIGNED_MEMBER_ACCESS(&(ptr)->mem)
eval_intern.h:170:40: note: in definition of macro ‘UNALIGNED_MEMBER_ACCESS’
  170 | # define UNALIGNED_MEMBER_ACCESS(expr) expr
      |                                        ^~~~
thread_sync.c:545:24: note: in expansion of macro ‘UNALIGNED_MEMBER_PTR’
  545 | #define queue_waitq(q) UNALIGNED_MEMBER_PTR(q, waitq)
      |                        ^~~~~~~~~~~~~~~~~~~~
thread_sync.c:773:16: note: in expansion of macro ‘queue_waitq’
  773 |     wakeup_one(queue_waitq(q));
      |                ^~~~~~~~~~~
thread_sync.c: In function ‘rb_queue_close’:
eval_intern.h:172:64: warning: taking address of packed member of ‘struct rb_queue’ may result in an unaligned pointer value [-Waddress-of-packed-member]
  172 | #define UNALIGNED_MEMBER_PTR(ptr, mem) UNALIGNED_MEMBER_ACCESS(&(ptr)->mem)
eval_intern.h:170:40: note: in definition of macro ‘UNALIGNED_MEMBER_ACCESS’
  170 | # define UNALIGNED_MEMBER_ACCESS(expr) expr
      |                                        ^~~~
thread_sync.c:545:24: note: in expansion of macro ‘UNALIGNED_MEMBER_PTR’
  545 | #define queue_waitq(q) UNALIGNED_MEMBER_PTR(q, waitq)
      |                        ^~~~~~~~~~~~~~~~~~~~
thread_sync.c:818:20: note: in expansion of macro ‘queue_waitq’
  818 |         wakeup_all(queue_waitq(q));
      |                    ^~~~~~~~~~~
In file included from vm_core.h:77,
                 from eval_intern.h:5,
                 from thread.c:68:
thread_sync.c: In function ‘queue_do_pop’:
thread_sync.c:910:27: warning: taking address of packed member of ‘struct rb_queue’ may result in an unaligned pointer value [-Waddress-of-packed-member]
  910 |             list_add_tail(&qw.as.q->waitq, &qw.w.node);
      |                           ^~~~~~~~~~~~~~~
ccan/list/list.h:195:44: note: in definition of macro ‘list_add_tail’
  195 | #define list_add_tail(h, n) list_add_tail_(h, n, LIST_LOC)
      |                                            ^
In file included from thread.c:68:
thread_sync.c: In function ‘rb_szqueue_initialize’:
thread_sync.c:1036:24: warning: taking address of packed member of ‘struct rb_queue’ may result in an unaligned pointer value [-Waddress-of-packed-member]
 1036 |     RB_OBJ_WRITE(self, &sq->q.que, ary_buf_new());
eval_intern.h:170:40: note: in definition of macro ‘UNALIGNED_MEMBER_ACCESS’
  170 | # define UNALIGNED_MEMBER_ACCESS(expr) expr
      |                                        ^~~~
thread_sync.c:1036:5: note: in expansion of macro ‘RB_OBJ_WRITE’
 1036 |     RB_OBJ_WRITE(self, &sq->q.que, ary_buf_new());
      |     ^~~~~~~~~~~~
eval_intern.h:172:64: warning: taking address of packed member of ‘struct rb_queue’ may result in an unaligned pointer value [-Waddress-of-packed-member]
  172 | #define UNALIGNED_MEMBER_PTR(ptr, mem) UNALIGNED_MEMBER_ACCESS(&(ptr)->mem)
eval_intern.h:170:40: note: in definition of macro ‘UNALIGNED_MEMBER_ACCESS’
  170 | # define UNALIGNED_MEMBER_ACCESS(expr) expr
      |                                        ^~~~
thread_sync.c:553:27: note: in expansion of macro ‘UNALIGNED_MEMBER_PTR’
  553 | #define szqueue_waitq(sq) UNALIGNED_MEMBER_PTR(sq, q.waitq)
      |                           ^~~~~~~~~~~~~~~~~~~~
thread_sync.c:1037:20: note: in expansion of macro ‘szqueue_waitq’
 1037 |     list_head_init(szqueue_waitq(sq));
      |                    ^~~~~~~~~~~~~
eval_intern.h:172:64: warning: taking address of packed member of ‘struct rb_szqueue’ may result in an unaligned pointer value [-Waddress-of-packed-member]
  172 | #define UNALIGNED_MEMBER_PTR(ptr, mem) UNALIGNED_MEMBER_ACCESS(&(ptr)->mem)

...

看來您已經安裝了 OpenSSL 3.0(這是 Ubuntu 22.04 上唯一可用的 OpenSSL 版本)。

由於這是對以前 OpenSSL 版本的重大更新,許多使用 OpenSSL(包括 Ruby)的庫需要進行調整以使用 OpenSSL 的更改 API。 從 openssl gem 的3.0.0版本開始支持 OpenSSL 3.0,而后者又首先隨 Ruby 版本 3.1.0 一起提供。

因此,為了能夠在您的 Ubuntu 22.0.4 上安裝自定義版本的 Ruby(使用 rbenv / rvm / ruby​​-install),您必須至少使用 Ruby 3.1.0。

Ubuntu 22.04 附帶了一個 Ruby 3.0.2 的補丁版本,您也可以使用它。 不幸的是,不直接支持舊的 Ruby 版本。 如果您需要 Ubuntu 22.04 上的舊 Ruby 版本,您還必須編譯自定義 OpenSSL 1.1.1 並針對此自定義 OpenSSL 編譯 Ruby。

運行rvmsudo rvm pkg install openssl

然后:

rvmsudo rvm install 2.5.1 --with-openssl-dir=/usr/share/rvm/usr

我無法在 ubuntu 22.04 上安裝 ruby​​ 2.7.6

$ lsb_release -d
Description:    Ubuntu 22.04 LTS
$ rvm install ruby-2.7.6
...
ruby-2.7.6 - #extracting ruby-2.7.6 to /home/dgautier/.rvm/src/ruby-2.7.6 - please wait                                                                                                                                                                                         
ruby-2.7.6 - #configuring - please wait                                                                                                                                                                                                                                         
ruby-2.7.6 - #post-configuration - please wait                                                                                                                                                                                                                                  
ruby-2.7.6 - #compiling - please wait                                                                                                                                                                                                                                           
ruby-2.7.6 - #installing - please wait                                                                                                                                                                                                                                          
Error running '__rvm_make install',                                                                                                                                                                                                                                             
please read /home/kriom/.rvm/log/1654075018_ruby-2.7.6/install.log                                                                                                                                                       
There has been an error while running make install. Halting the installation.        
$ cat /home/kriom/.rvm/log/1654075018_ruby-2.7.6/install.log
installing default gems from lib:   /home/dgautier/.rvm/rubies/ruby-2.7.6/lib/ruby/gems/2.7.0 (build_info, cache, doc, extensions, gems, specifications)                                                                                                                        
                                    benchmark 0.1.0                                                                                                                                                                                                                             
/home/dgautier/.rvm/src/ruby-2.7.6/lib/rubygems/core_ext/kernel_require.rb:83:in `require': cannot load such file -- openssl (LoadError)                                                                                                                                        
        from /home/dgautier/.rvm/src/ruby-2.7.6/lib/rubygems/core_ext/kernel_require.rb:83:in `require'                                                                                                                                                                         
        from /home/dgautier/.rvm/src/ruby-2.7.6/lib/rubygems/specification.rb:2430:in `to_ruby'                                                                                                                                                                                 
        from ./tool/rbinstall.rb:846:in `block (2 levels) in install_default_gem'                                                                                                                                                                                               
        from ./tool/rbinstall.rb:279:in `open_for_install'                                                                                                                                                                                                                      
        from ./tool/rbinstall.rb:845:in `block in install_default_gem'                                                                                                                                                                                                          
        from ./tool/rbinstall.rb:835:in `each'                                                                                          
        from ./tool/rbinstall.rb:835:in `install_default_gem'                                                                                                                                                                                                                   
        from ./tool/rbinstall.rb:799:in `block in <main>'                                                                               
        from ./tool/rbinstall.rb:950:in `block in <main>'                                                                                                                                                                                                                       
        from ./tool/rbinstall.rb:947:in `each'                                                                                                                                                                                                                                  
        from ./tool/rbinstall.rb:947:in `<main>'                                                                                        
make: *** [uncommon.mk:380: do-install-nodoc] Error 1                                                                                                                                                                                                                           
++ return 2                                                                                                                             

這解決了這個問題:

$ rvm pkg install openssl
$ rvm reinstall 2.7.6 --with-openssl-dir=/home/$(whoami)/.rvm/usr

由於您的錯誤突出顯示了未創建的 gemset,請在一行中執行:

rvm use ruby-2.6.6 --install --default --create

或者,如果失敗,請嘗試:

ruby -v
rvm list
rvm install ruby-2.6.6
rvm use ruby-2.6.6 --default

發出命令

rvm pkg install openssl

並觀察輸出

Extracting openssl to /usr/share/rvm/src/openssl-1.0.1i.....
Configuring openssl in /usr/share/rvm/src/openssl-1.0.1i.........
Compiling openssl in /usr/share/rvm/src/openssl-1.0.1i.....
Installing openssl to /usr/share/rvm/usr.................

接着

rvm install 2.4.1 --with-openssl-dir=/usr/share/rvm/usr # directory taken from output Installing openssl to /usr/share/rvm/usr

問題是你使用的是 ubuntu 的 22.04 版本,它只包含版本 3 以上的 openssl 但 ruby 並且 Rails 在 ssl 的 1.1 版本上運行要么你降級你的 ubuntu 版本 0 或 838209 版本我寧願降級我的 ubuntu 版本

我在 Ubuntu-22.04 中通過 rvm 安裝 ruby-2.6.5 時也遇到了這個問題

ubuntu-22.04 不支持 ruby-2.5 及以下版本,因此我找到了一個安裝 openssl 的解決方案,它支持所有 ruby 版本

rvm 得到頭

wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz tar zxvf openssl-1.1.1g.tar.gz cd openssl-1.1.1g./config --prefix=$HOME/. openssl/openssl-1.1.1g --openssldir=$HOME/.openssl/openssl-1.1.1g

制作制作測試制作安裝

rm -rf ~/.openssl/openssl-1.1.1g/certs ln -s /etc/ssl/certs ~/.openssl/openssl-1.1.1g/certs

使用--with-openssl-dir選項安裝任何 ruby 版本我像這樣安裝 ruby-2.6.5

rvm 重新安裝 ruby-2.6.5 --with-openssl-dir=$HOME/.openssl/openssl-1.1.1g

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM