ruby-on-rails 在ubuntu22.04上安装ruby的正确方法是什么

dfty9e19  于 2022-11-19  发布在  Ruby
关注(0)|答案(4)|浏览(199)

在ubuntu 22.04上用rvm安装ruby有一个问题,因为它会给予你x1c 0d1x以下的错误

Error running '__rvm_make -j8',
please read /usr/share/rvm/log/1655413907_ruby-2.5.0/make.log

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

如果我尝试安装ruby 2.7.0、2.7.1、2.7.2及更高版本,也会出现同样的错误。
我发现了建议here使用以下步骤
rvm软件包安装openssl
rvm删除x.x.x
安装x.x.x -C --使用-openssl-目录=$HOME/.rvm/usr
这使得安装成功,但是一些库如pg或rails或puma不能与以这种方式安装的ruby版本一起工作。例如,在捆绑包安装后,如果你运行命令'rails db:migrate',它会给予你另一个来自pg gem的错误-分段错误

/usr/share/rvm/gems/ruby-2.5.0/gems/listen-3.1.5/lib/listen/record.rb:113: [BUG] Segmentation fault at 0x00007f03df83e140
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]

-- Control frame information -----------------------------------------------
c:0011 p:0009 s:0055 e:000053 METHOD /usr/share/rvm/gems/ruby-2.5.0/gems/listen-3.1.5/lib/listen/record/entry.rb:53
c:0010 p:0014 s:0047 e:000046 METHOD /usr/share/rvm/gems/ruby-2.5.0/gems/listen-3.1.5/lib/listen/record/entry.rb:18
c:0009 p:0039 s:0042 e:000041 METHOD /usr/share/rvm/gems/ruby-2.5.0/gems/listen-3.1.5/lib/listen/record.rb:100
c:0008 p:0070 s:0034 e:000033 METHOD /usr/share/rvm/gems/ruby-2.5.0/gems/listen-3.1.5/lib/listen/record.rb:68
c:0007 p:0009 s:0028 e:000027 BLOCK  /usr/share/rvm/gems/ruby-2.5.0/gems/listen-3.1.5/lib/listen/adapter/base.rb:76
c:0006 p:0017 s:0025 e:000024 METHOD /usr/share/rvm/gems/ruby-2.5.0/gems/listen-3.1.5/lib/listen/adapter/base.rb:103
c:0005 p:0008 s:0018 e:000017 BLOCK  /usr/share/rvm/gems/ruby-2.5.0/gems/listen-3.1.5/lib/listen/adapter/base.rb:76 [FINISH]
c:0004 p:---- s:0014 e:000013 CFUNC  :each
c:0003 p:0011 s:0010 e:000009 BLOCK  /usr/share/rvm/gems/ruby-2.5.0/gems/listen-3.1.5/lib/listen/adapter/base.rb:75 [FINISH]
c:0002 p:0007 s:0006 e:000005 BLOCK  /usr/share/rvm/gems/ruby-2.5.0/gems/listen-3.1.5/lib/listen/internals/thread_pool.rb:6 [FINISH]
c:0001 p:---- s:0003 e:000002 (none) [FINISH]

-- Ruby level backtrace information ----------------------------------------
/usr/share/rvm/gems/ruby-2.5.0/gems/listen-3.1.5/lib/listen/internals/thread_pool.rb:6:in `block in add'
/usr/share/rvm/gems/ruby-2.5.0/gems/listen-3.1.5/lib/listen/adapter/base.rb:75:in `block in start'
/usr/share/rvm/gems/ruby-2.5.0/gems/listen-3.1.5/lib/listen/adapter/base.rb:75:in `each'
/usr/share/rvm/gems/ruby-2.5.0/gems/listen-3.1.5/lib/listen/adapter/base.rb:76:in `block (2 levels) in start'
/usr/share/rvm/gems/ruby-2.5.0/gems/listen-3.1.5/lib/listen/adapter/base.rb:103:in `_timed'
/usr/share/rvm/gems/ruby-2.5.0/gems/listen-3.1.5/lib/listen/adapter/base.rb:76:in `block (3 levels) in start'
/usr/share/rvm/gems/ruby-2.5.0/gems/listen-3.1.5/lib/listen/record.rb:67:in `build'
/usr/share/rvm/gems/ruby-2.5.0/gems/listen-3.1.5/lib/listen/record.rb:102:in `_fast_build_dir'
/usr/share/rvm/gems/ruby-2.5.0/gems/listen-3.1.5/lib/listen/record/entry.rb:18:in `children'

-- Machine register context ------------------------------------------------
 RIP: 0x00007f03df83e140 RBP: 0x000055e2c1faa3e8 RSP: 0x00007ffcb2ab4718
 RAX: 0x0000000000000000 RBX: 0x00007f03df8412c0 RCX: 0x0000000000000000
 RDX: 0x000055e2bc30f010 RDI: 0x000055e2c1faa6c0 RSI: 0x000055e2c260c540
  R8: 0x0000000000000000  R9: 0x0000000000000000 R10: 0x00007f03dff62630
 R11: 0x00007f03e0076890 R12: 0x000055e2c1faa3e0 R13: 0x00007f03dfd83b10
 R14: 0x0000000000000000 R15: 0x000055e2c2670fd0 EFL: 0x0000000000010202

-- C level backtrace information -------------------------------------------
Unexpected size of .debug_line in /usr/share/rvm/rubies/ruby-2.5.0/bin/ruby
/usr/share/rvm/rubies/ruby-2.5.0/lib/libruby.so.2.5(rb_vm_bugreport+0x4ae) [0x7f03e16b18ce]
/usr/share/rvm/rubies/ruby-2.5.0/lib/libruby.so.2.5(0xaafbd) [0x7f03e152ffbd]
/usr/share/rvm/rubies/ruby-2.5.0/lib/libruby.so.2.5(0x19e2e6) [0x7f03e16232e6]
/lib/x86_64-linux-gnu/libc.so.6(0x7f03e128e520) [0x7f03e128e520]
/lib/x86_64-linux-gnu/libssl.so.3(0x7f03df83e140) [0x7f03df83e140]

根据这篇文章enter link description here,pg gem的这个问题也被重新定义为openssl版本。
所以这两个问题都与ubuntu22.04附带的OpenSSL版本有关,但是我找不到任何指南来解释如何一步一步地修复它,或者如何使用旧的OpenSSL版本进行ruby安装,而不会出现所有这些错误。
那么,在Ubuntu 22.04上安装ruby的正确步骤是什么呢?

goucqfw6

goucqfw61#

我遇到了同样的问题,最好的解决方案是使用rbenv而不是rvm。你不需要降级Ubuntu 22.04的openssl版本,因为rbenv已经下载并使用了你的ruby版本的openssl 1.1.1。
使用ruby-build安装rbenv https://github.com/rbenv/rbenv作为https://github.com/rbenv/ruby-build插件
我的版本(Openssl、Ruby和Rbenv)x1c 0d1x

fae0ux8s

fae0ux8s2#

在大致了解了您的想法之后,我正考虑降级整个系统。
https://deanpcmad.com/2022/installing-older-ruby-versions-on-ubuntu-22-04/
并决定给予它最后一次机会。作者正在使用名为asdf的工具,但有一个说明,同样的配置应该适用于rbenv。我运行rvm implode,安装rbenv,安装gems并启动rails服务器。
我不知道rvm有什么问题,是它的错还是OpenSSL不匹配,但目前我想把重点放在编码上,就是这样。
希望能对今后的研究有所帮助。

jq6vz3qz

jq6vz3qz3#

对我有效的方法是
rvm pkg install openssl
然后再
rvm install ruby-2.7.3 --with-openssl-dir=$HOME/.rvm/usr
希望能有所帮助!

3zwjbxry

3zwjbxry4#

大多数从Google来到这里的人可能会运行以下内容:

rvm install ruby

在编写本文时,这将安装ruby 3.0.0,这将在Ubuntu 22.04上给予您一个构建错误。
大多数人可能希望安装最新的3.1.0,但在运行rvm list known时不会显示。
要安装最新的(当前为3.1.0),请运行:

rvm install ruby-3.1.0

最新版本可以很好地安装在Ubuntu 22.04上。

相关问题