我已经在我值得信赖的M1 Mac上沿着Ruby有一段时间了,没有汗水,特别是在好的旧x86_64
模式下(通过RVM安装在Rosetta终端上)。生活很美好。
rvm ls
ruby-2.7.7 [ x86_64 ]
=* ruby-3.0.5 [ arm64 ]
ruby-3.0.6 [ x86_64 ]
我决定拥抱原生未来,并以原生arm64
模式安装Ruby 3.0.5。小菜一碟,对吧?错了...
当然,它安装顺利,它甚至看起来像它的行为。我很高兴地通过bundle install
安装了我的Rails gem,以为我是清白的。但是当我尝试启动我的Rails应用程序时,我得到了这样一条令人愉快的消息:
dyld[*****]: missing symbol called
我甚至重新安装了libffi
西斯arm 64自制软件,因为它可以根据我在网络上找到的一些说明,但在rvm reinstall
s上没有成功,因为它最终以同样的错误失败而告终。
我找到了this related SO post,但它不适用于我,因为它与mysql
相关-我的项目使用postgres
。还有另一个悲伤,孤独的StackOverflow post没有答案,就像在照镜子一样。一个悲伤的,未解决的镜子...
我重新安装了libyaml和libffi,在重新安装Ruby之前,没有运气。设置LDPFlags
指向ffi二进制文件,也没有运气。我在网上查了所有能查到的都没解决...
2条答案
按热度按时间yks3o0rb1#
它要么是带有本机扩展的gem(最有可能),要么是您通过Rosetta安装的其他lib/二进制文件。
假设错误中没有其他信息,我们需要尝试用猎枪而不是手术刀来解决这个问题。所以我会从完全删除/重新安装rvm开始(事实上,我会借此机会 * 升级 * 到
asdf
),这样你就可以知道没有一个带有本地扩展的gem是在Intel/Rosetta模式下构建的。如果这不起作用,那么用自制软件重复。
flmtquvp2#
我希望没有人经历过这一点,但如果你像我一样不幸,这就是我如何设法解决它:
打开一个arch x86_64 terminal会话,卸载
x86_64
Homebrew及其所有已安装的lib(您确实需要在x86_64
模式下打开终端,否则卸载脚本将删除arm64
Homebrew的内容):Reinstall rvm现在在
ARM64
终端中:此时,安装过程应该会失败,无法准确显示哪个动态库不存在。在我的情况下,它是
libgmp
你现在应该没事了,因为你现在可以看到什么是错的,并搜索如何修复它。在我的例子中,我必须重新安装
gmp
,还要处理cmake
和pkg-config