Techioz Blog

gem 更新システムは mach-o ファイルで失敗しますが、互換性のないアーキテクチャです (「arm64」があり、「x86_64」が必要です)

概要

こんにちは、このサイト https://gorails.com/setup/macos/14-sonoma から asdf を使用して Ruby をインストールしました

gem update –system の後、次のエラーが発生します。

<internal:/usr/local/Cellar/ruby/3.3.0/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:127:in `require': dlopen(/Users/andreasgerecke/.gem/ruby/3.3.0/gems/stringio-3.1.0/lib/stringio.bundle, 0x0009): tried: '/Users/andreasgerecke/.gem/ruby/3.3.0/gems/stringio-3.1.0/lib/stringio.bundle' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/System/Volumes/Preboot/Cryptexes/OS/Users/andreasgerecke/.gem/ruby/3.3.0/gems/stringio-3.1.0/lib/stringio.bundle' (no such file), '/Users/andreasgerecke/.gem/ruby/3.3.0/gems/stringio-3.1.0/lib/stringio.bundle' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')) - /Users/andreasgerecke/.gem/ruby/3.3.0/gems/stringio-3.1.0/lib/stringio.bundle (LoadError)
  from <internal:/usr/local/Cellar/ruby/3.3.0/lib/ruby/3.3.0/rubygems/core_ext/kernel_require.rb>:127:in `require'
  from /usr/local/Cellar/ruby/3.3.0/lib/ruby/3.3.0/rubygems/remote_fetcher.rb:78:in `initialize'
  from /usr/local/Cellar/ruby/3.3.0/lib/ruby/3.3.0/rubygems/remote_fetcher.rb:56:in `new'
  from /usr/local/Cellar/ruby/3.3.0/lib/ruby/3.3.0/rubygems/remote_fetcher.rb:56:in `fetcher'
  from /usr/local/Cellar/ruby/3.3.0/lib/ruby/3.3.0/rubygems/spec_fetcher.rb:77:in `initialize'
  from /usr/local/Cellar/ruby/3.3.0/lib/ruby/3.3.0/rubygems/spec_fetcher.rb:43:in `new'
  from /usr/local/Cellar/ruby/3.3.0/lib/ruby/3.3.0/rubygems/spec_fetcher.rb:43:in `fetcher'
  from /usr/local/Cellar/ruby/3.3.0/lib/ruby/3.3.0/rubygems/commands/update_command.rb:141:in `fetch_remote_gems'
  from /usr/local/Cellar/ruby/3.3.0/lib/ruby/3.3.0/rubygems/commands/update_command.rb:168:in `highest_remote_name_tuple'
  from /usr/local/Cellar/ruby/3.3.0/lib/ruby/3.3.0/rubygems/commands/update_command.rb:233:in `rubygems_target_version'
  from /usr/local/Cellar/ruby/3.3.0/lib/ruby/3.3.0/rubygems/commands/update_command.rb:278:in `update_rubygems'
  from /usr/local/Cellar/ruby/3.3.0/lib/ruby/3.3.0/rubygems/commands/update_command.rb:99:in `execute'
  from /usr/local/Cellar/ruby/3.3.0/lib/ruby/3.3.0/rubygems/command.rb:326:in `invoke_with_build_args'
  from /usr/local/Cellar/ruby/3.3.0/lib/ruby/3.3.0/rubygems/command_manager.rb:254:in `invoke_command'
  from /usr/local/Cellar/ruby/3.3.0/lib/ruby/3.3.0/rubygems/command_manager.rb:193:in `process_args'
  from /usr/local/Cellar/ruby/3.3.0/lib/ruby/3.3.0/rubygems/command_manager.rb:151:in `run'
  from /usr/local/Cellar/ruby/3.3.0/lib/ruby/3.3.0/rubygems/gem_runner.rb:56:in `run'
  from /usr/local/opt/ruby/bin/gem:12:in `<main>'

誰か助けてくれませんか?

解決策

不足しているプラットフォーム (この場合は arm64-darwin-23) を追加し、Bundler を再度実行します。

$ bundle lock --add-platform arm64-darwin-23
$ bundle install

バンドル プラットフォームとバンドル ロックを使用した他のプラットフォームのサポートについてお読みください。