你是否一直在努力在你的M1 Mac上安装ffi?你是否看到这些常见的错误:
- (mach-o文件,但是是一个不兼容的架构(有'arm64',需要'x86_64')
- 缺少兼容的架构
或者像这样的错误?
[capacitor] /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require’:
dlopen(/Library/Ruby/Gems/2.6.0/gems/ffi-1.15.4/lib/ffi_c.bundle, 0x0009): tried:
‘/Library/Ruby/Gems/2.6.0/gems/ffi-1.15.4/lib/ffi_c.bundle’
(mach-o file, but is an incompatible architecture (have ‘arm64’, need ‘x86_64’)),
‘/usr/lib/ffi_c.bundle’ (no such file) - /Library/Ruby/Gems/2.6.0/gems/ffi-1.15.4/lib/ffi_c.bundle (LoadError)
你可能在试图让cocoapods, Capacitor, Slate, 或sassc 工作时看到这些ffi 问题。或者是其他一些依赖ffi 的工具。
不幸的是,外面有很多过时的和不正确的建议,导致人们把他们的开发环境搞得一团糟。
人们在M1 Mac上安装ffi时遇到困难的4个主要原因
1)他们没有一个合适的Ruby开发环境,他们试图用系统的Ruby来安装宝石。了解为什么你不应该使用系统的Ruby来安装Mac上的宝石。
2)他们试图安装一个旧版本。如果你试图将ffi 作为Ruby项目的一部分来安装,并使用Gemfile ,试着运行bundle update ffi ,以获得最新的版本。
-
他们听从了过时的建议,使用
arch -x86_64或在 Rosetta 模式下运行终端。 -
他们听从了错误的建议,使用
sudo。了解为什么你永远不应该使用sudo来安装宝石。
那么,你如何才能得到一个合适的Ruby开发环境,从而最终安装ffi?
如何在苹果Silicon M1上以原生模式安装ffi
一个适当的Ruby开发环境的关键是用版本管理器安装一个独立的、较新的Ruby版本。在高层次上,它涉及这5个步骤:
- 安装Homebrew(它也安装了先决条件的苹果命令行工具,也被称为Xcode命令行工具)
- 安装一个Ruby管理器
- 配置Ruby管理器
- 安装一个特定版本的Ruby
- 切换到该版本的Ruby
虽然你可以花时间手动设置所有的东西,但有一个更好的方法!为了拯救人们的挫折感,以及他们宝贵的时间,我建立了Ruby on Mac,一个自动化的脚本来帮助像你这样的人得到一个正确的Ruby设置。我保证它将解决你的ffi ,或者我将亲自为你解决这个问题。
下面是一个有ffi 问题的人的评论。
你(和你美妙的脚本)今天把我从巨大的危险中拯救出来。我在几个月前开发了我的第一个Jekyll网站。而我现在正在用Eleventy开发一个网站。今天早些时候,我回到了我的Jekyll网站,以确保我仍然可以建立它,因为我有一些更新要做。不幸的是,该网站未能建立,出现了可怕的 "ffi "错误。经过无数次失败的尝试,我尝试了所有我能找到的解决方法,最终我发现了你的脚本。虽然确实需要一些时间来完成它,但我不得不说,它的效果非常好我的网站再次建立起来了,而且我觉得你的脚本放在我的系统上的Ruby平台比以前脆弱多了。再次感谢你的伟大脚本和你对社区的服务。- 鲍勃-曼苏尔
它不只是有一次性的使用。你可以一次又一次地运行它,以保持你的系统是最新的和安全的。而且,当你下次得到一个新的Mac时,它将为你节省半天时间,因为它还可以自动安装你所有的Mac应用程序,此外还有一个完整的开发环境。你现在和将来都可以用一次性的费用获得所有这些时间上的节省。
当你今天购买Ruby on Mac时,你将支持一个独立的开发者,而且考虑到它所节省的时间,你将以一个非常合理的价格获得它。
如果你想在一台工作电脑上设置ffi,你应该能够支付Ruby on Mac的一次性费用。