无法在 Ubuntu 22.04 上安装 ruby​​ 版本 2.6.6

Cri*_*ger 5 ruby ubuntu ruby-on-rails

我有一个使用 ruby​​ 版本 2.6.6 的现有项目。但我的机器ruby版本是3.0.2。因此,当我尝试在我的计算机上运行我的项目时,它会显示此错误。

Your Ruby version is 3.0.2, but your Gemfile specified 2.6.6
Run Code Online (Sandbox Code Playgroud)

所以我也尝试使用 rbenv 环境安装 ruby​​ 2.6.6

rbenv install 2.6.6
Installing ruby-2.6.6...

BUILD FAILED (Ubuntu 22.04 using ruby-build 20220426)

Inspect or clean up the working tree at /tmp/ruby-build.20220501122810.9309.e7yCPU
Results logged to /tmp/ruby-build.20220501122810.9309.log

Last 10 log lines:
installing default date_core libraries
linking shared-object fiddle.so
make[2]: Leaving directory '/tmp/ruby-build.20220501122810.9309.e7yCPU/ruby-2.6.6/ext/readline'
make[2]: Leaving directory '/tmp/ruby-build.20220501122810.9309.e7yCPU/ruby-2.6.6/ext/fiddle'
linking shared-object bigdecimal.so
make[2]: Leaving directory '/tmp/ruby-build.20220501122810.9309.e7yCPU/ruby-2.6.6/ext/bigdecimal'
linking shared-object date_core.so
make[2]: Leaving directory '/tmp/ruby-build.20220501122810.9309.e7yCPU/ruby-2.6.6/ext/date'
make[1]: Leaving directory '/tmp/ruby-build.20220501122810.9309.e7yCPU/ruby-2.6.6'
make: *** [uncommon.mk:286: build-ext] Error 2
Run Code Online (Sandbox Code Playgroud)

所以我不知道如何让它发挥作用。任何人都可以帮忙解决这个问题。我尝试了互联网上所有可能的方法,但它不起作用。

ruby -v

ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux-gnu]
Run Code Online (Sandbox Code Playgroud)

Rails -v

Rails 6.1.4.1
Run Code Online (Sandbox Code Playgroud)

Rbenv --version

rbenv 1.1.2
Run Code Online (Sandbox Code Playgroud)

Ruby 构建日志文件链接位于此处

Cri*_*ger 16

几天后我发现错误是由于 ubuntu 的 OpenSSL 引起的

执行此命令后,我可以下载 ruby​​ 2.6.6

rvm pkg install openssl
Run Code Online (Sandbox Code Playgroud)

下一个

rvm install ruby-2.6.6 --with-openssl-dir=$HOME/.rvm/usr
Run Code Online (Sandbox Code Playgroud)

你可以参考这里的讨论

  • 对我来说 `--with-openssl-dir=/usr/local/rvm/usr` (2认同)

kou*_*bel 0

您可以使用 rvm 安装两个版本的 ruby​​。请参阅https://rvm.io/rubies/default

现在,自动选择正确的 ruby​​ 版本的技巧(这样你就不必rvm use 2.6.6每次都调用)是你不要直接打开带有旧 ruby​​ 版本的项目的终端。相反,您可以在启动服务器之前打开一个终端到其父目录并 cd 进入项目的文件夹。

我曾经遇到过同样的问题,这就是我解决的方法。