如何在Mac Ventura上安装旧版本的Ruby

w8f9ii69  于 2023-06-22  发布在  Ruby
关注(0)|答案(1)|浏览(266)

我正在尝试打开旧的Rails 5应用程序。我已经很多年没写代码了,很难记住...此外,我有一台新电脑(mac 0 s文图拉),我不得不重新安装Hombrew,Xcode,Ruby等。这个应用的ruby版本是ruby '2.4.4'
我一点一点地解决问题,但我被困在那里:
当我尝试安装一个旧版本的ruby时,我会看到:

rbenv install 2.4.4                                                                                                                                                    [(3.2.2)]
To follow progress, use 'tail -f /var/folders/bh/wbvn20493_s066frg6c2wwx00000gn/T/ruby-build.20230615201145.8783.log' or pass --verbose
Downloading ruby-2.4.4.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.4.tar.bz2
Installing ruby-2.4.4...

WARNING: ruby-2.4.4 is past its end of life and is now unsupported.
It no longer receives bug fixes or critical security updates.

BUILD FAILED (macOS 13.4 using ruby-build 20230615)

Inspect or clean up the working tree at /var/folders/bh/wbvn20493_s066frg6c2wwx00000gn/T/ruby-build.20230615201145.8783.nJ19PV
Results logged to /var/folders/bh/wbvn20493_s066frg6c2wwx00000gn/T/ruby-build.20230615201145.8783.log

Last 10 log lines:
../.././include/ruby/ruby.h:1753:56: note: expanded from macro 'rb_intern'
        __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                       ^
closure.c:263:14: error: call to undeclared function 'ffi_prep_closure'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    result = ffi_prep_closure(pcl, cif, callback, (void *)self);
             ^
6 warnings and 1 error generated.
make[2]: *** [closure.o] Error 1
make[1]: *** [ext/fiddle/all] Error 2
make: *** [build-ext] Error 2
j2qf4p5b

j2qf4p5b1#

正如其他人提到的,Ruby 2.4.4非常旧,最好尝试安装一个新版本,然后更新您的Rails应用程序以使用该新版本。如果可行的话,我写了一个详细的分步指南来介绍How and Why to Upgrade the Ruby Version in Your Project
但是,可以理解的是,您可能希望首先让您的Rails应用程序运行2.4.4,然后一点一点地将其更新到Ruby和Rails的新版本。在这种情况下,绝对可以在macOS Ventura上安装2.4.4,并且比2.3.8及更早版本容易得多。我在guide to installing older Ruby versions on macOS中解释了这一点。
另一件需要记住的事情是,有几个Ruby版本管理器,它们的工作方式并不相同。他们都有不同的优点和缺点。我看到你尝试用rbenv安装Ruby 2.4.4。我个人推荐ruby-install,因为它最可靠。我刚刚用它在我的M1 Mac上通过运行ruby-install 2.4.10成功安装了Ruby 2.4.10。
正如我在关于升级Ruby版本的文章中所解释的,对于任何给定的Ruby版本,您总是希望使用最新的补丁版本。修补程序版本是第3位数字。在您的例子中,由于您使用的是Ruby 2.4,因此您希望使用2.4.x系列中可能的最新版本,即2.4.10。
下面是安装方法:
如果您使用的是Intel Mac,以下是高级步骤:
1.完全卸载rbenv和您可能已经安装的任何其他版本管理器
1.退出并重新启动终端
1.安装ruby-installchruby以及brew install ruby-install chruby
1.使用ruby-install 2.4.10安装2.4.10。
1.配置您的shell启动文件以使用chruby
1.按照我的guide for upgrading your Ruby version将您的Rails应用程序从2.4.4更新到2.4.10
有关更详细的分步指南,请阅读我的guide to installing older Ruby versions on macOS
如果你有一个苹果硅Mac与M1或M2芯片,你需要运行终端与罗塞塔和重新安装所有的开发工具,包括Homebrew。要使用Rosetta运行终端,请执行以下步骤:
1.如果终端正在运行,请退出
1.转到Finder
1.通过按shift-command-U转到Utilities文件夹(或从菜单栏中选择“Go”,然后选择Utilities)
1.单击一次终端应用程序以选择它,但不要启动它。
1.按-i键盘快捷键打开“信息”窗口(或从菜单栏:“文件”,然后“获取信息”)。
1.选中“使用Rosetta打开”复选框
1.关闭终端信息窗口
1.发射终端
1.运行arch。应该是i386
你现在可以安装Homebrew了,它会检测到你正在使用Rosetta,并将所有内容安装在/usr/local中,而不是/opt/homebrew中。
然后按照英特尔部分中的相同步骤操作。
或者,您可以使用上面评论中提到的Docker。我个人不使用Docker,所以我没有详细的教程,但我知道有很多关于如何为Rails应用程序设置Docker的教程。

相关问题