M1 macOS(arm64)下Stringio 3.0.6安装执行异常求助
Stringio 3.0.6 架构不兼容报错解决方案求助
在执行bundle install安装项目依赖时,Stringio 3.0.6 出现架构不兼容报错:
<internal:/Users/sviat/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require': dlopen(/Users/sviat/.rvm/gems/ruby-3.1.2/gems/stringio-3.0.6/lib/stringio.bundle, 0x0009): tried: '/Users/sviat/.rvm/gems/ruby-3.1.2/gems/stringio-3.0.6/lib/stringio.bundle' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/Users/sviat/.rvm/gems/ruby-3.1.2/gems/stringio-3.0.6/lib/stringio.bundle' (no such file), '/Users/sviat/.rvm/gems/ruby-3.1.2/gems/stringio-3.0.6/lib/stringio.bundle' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')) - /Users/sviat/.rvm/gems/ruby-3.1.2/gems/stringio-3.0.6/lib/stringio.bundle (LoadError)
已尝试但无效的操作:
- 设置
bundle config set force_ruby_platform true - 安装的Ruby版本为
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [arm64-darwin22] - 使用ZSH并执行
source ~/.zshrc加载配置 - 使用arm64架构终端,
uname -m返回arm64 - 可通过
gem list stringio安装stringio,但执行arch -arm64 gem install stringio会触发上述报错 - 终端未启用Rosetta
- 重装Ruby、改用RBENV、重启电脑
环境信息:MacOS Ventura 13.4,M1芯片,Ruby 3.1.2,RVM最新版,终端为arm64架构。
可行解决方案建议:
- 清理gem缓存并重新编译Stringio:
gem cleanup stringio rm -rf ~/.rvm/gems/ruby-3.1.2/gems/stringio-3.0.6 export ARCHFLAGS="-arch arm64" gem install stringio -v 3.0.6 --platform=ruby - 检查RVM的架构配置,确保安装Ruby时指定arm64:
rvm uninstall ruby-3.1.2 export ARCHFLAGS="-arch arm64" rvm install ruby-3.1.2 --disable-binary - 升级Stringio到更高版本(比如3.0.7+),新版本可能修复了M1架构兼容问题:
在Gemfile中修改版本号后执行bundle update stringio - 检查系统中是否存在x86_64版本的依赖残留,清理相关缓存:
rm -rf ~/.rvm/cache/* rm -rf ~/.bundle/cache/* - 验证gem的架构信息,确认安装的是arm64版本:
如果输出包含lipo -info /Users/sviat/.rvm/gems/ruby-3.1.2/gems/stringio-3.0.6/lib/stringio.bundlex86_64而没有arm64,说明编译时架构不对,需要重新编译。
内容的提问来源于stack exchange,提问作者Sviat Kuzhelev
相关产品推荐
相关产品推荐

