Homebrew / brew

🍺 The missing package manager for macOS (or Linux)
https://brew.sh
BSD 2-Clause "Simplified" License
41.21k stars 9.69k forks source link

incompatible rubgem version for bundler #16021

Closed TMTBO closed 1 year ago

TMTBO commented 1 year ago

brew doctor output

▶ brew doctor
Your system is ready to brew.

Verification

brew config output

▶ brew config
HOMEBREW_VERSION: 4.1.12-2-g1f80e82
ORIGIN: https://github.com/Homebrew/brew
HEAD: 1f80e82dd72fce6642e4ea360f7a1feef5d78470
Last commit: 2 days ago
Core tap JSON: 22 Sep 01:40 UTC
HOMEBREW_PREFIX: /opt/homebrew
HOMEBREW_CASK_OPTS: []
HOMEBREW_DEVELOPER: set
HOMEBREW_EDITOR: nvim
HOMEBREW_MAKE_JOBS: 8
HOMEBREW_SORBET_RUNTIME: set
Homebrew Ruby: 2.6.10 => /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby
CPU: octa-core 64-bit arm_firestorm_icestorm
Clang: 14.0.3 build 1403
Git: 2.39.2 => /Applications/Xcode.app/Contents/Developer/usr/bin/git
Curl: 8.1.2 => /usr/bin/curl
macOS: 13.5.2-arm64
CLT: 15.0.0.0.1.1694021235
Xcode: 14.3.1
Rosetta 2: false

What were you trying to do (and why)?

I want to create a cask formula, some error occured with brew audit --new-cask muyu -dv. Then I found that brew style -dv and brew install-bundler-gems -dv got the same error.

What happened (include all command output)?

▶ brew audit --new-cask muyu -dv
/opt/homebrew/Library/Homebrew/brew.rb (Cask::CaskLoader::FromDefaultTapPathLoader): loading muyu
/opt/homebrew/Library/Homebrew/brew.rb (Cask::CaskLoader::FromDefaultTapPathLoader): loading muyu
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/bin/bundle install
Fetching gem metadata from https://rubygems.org/.......
bundler-2.4.18 requires rubygems version >= 3.0.1, which is incompatible with the current version, 2.7.6
Error: failed to run `/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/bin/bundle install`!
Error: Kernel.exit
/opt/homebrew/Library/Homebrew/extend/kernel.rb:83:in `exit'
/opt/homebrew/Library/Homebrew/extend/kernel.rb:83:in `odie'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/sorbet-runtime-0.5.10461/lib/types/private/methods/call_validation.rb:157:in `call'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/sorbet-runtime-0.5.10461/lib/types/private/methods/call_validation.rb:157:in `validate_call'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/sorbet-runtime-0.5.10461/lib/types/private/methods/_methods.rb:270:in `block in _on_method_added'
/opt/homebrew/Library/Homebrew/utils/gems.rb:60:in `odie_if_defined'
/opt/homebrew/Library/Homebrew/utils/gems.rb:242:in `install_bundler_gems!'
/opt/homebrew/Library/Homebrew/style.rb:85:in `run_rubocop'
/opt/homebrew/Library/Homebrew/style.rb:53:in `check_style_impl'
/opt/homebrew/Library/Homebrew/style.rb:35:in `check_style_json'
/opt/homebrew/Library/Homebrew/dev-cmd/audit.rb:185:in `audit'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/sorbet-runtime-0.5.10461/lib/types/private/methods/call_validation.rb:157:in `call'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/sorbet-runtime-0.5.10461/lib/types/private/methods/call_validation.rb:157:in `validate_call'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/sorbet-runtime-0.5.10461/lib/types/private/methods/_methods.rb:270:in `block in _on_method_added'
/opt/homebrew/Library/Homebrew/brew.rb:94:in `<main>'
▶ brew install-bundler-gems -dv
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/bin/bundle install
Fetching gem metadata from https://rubygems.org/.......
bundler-2.4.18 requires rubygems version >= 3.0.1, which is incompatible with the current version, 2.7.6
Error: failed to run `/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/bin/bundle install`!
Error: Kernel.exit
/opt/homebrew/Library/Homebrew/extend/kernel.rb:83:in `exit'
/opt/homebrew/Library/Homebrew/extend/kernel.rb:83:in `odie'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/sorbet-runtime-0.5.10461/lib/types/private/methods/call_validation.rb:157:in `call'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/sorbet-runtime-0.5.10461/lib/types/private/methods/call_validation.rb:157:in `validate_call'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/sorbet-runtime-0.5.10461/lib/types/private/methods/_methods.rb:270:in `block in _on_method_added'
/opt/homebrew/Library/Homebrew/utils/gems.rb:60:in `odie_if_defined'
/opt/homebrew/Library/Homebrew/utils/gems.rb:242:in `install_bundler_gems!'
/opt/homebrew/Library/Homebrew/dev-cmd/install-bundler-gems.rb:39:in `install_bundler_gems'
/opt/homebrew/Library/Homebrew/brew.rb:94:in `<main>'
▶ brew style -dv
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/bin/bundle install
Fetching gem metadata from https://rubygems.org/.......
bundler-2.4.18 requires rubygems version >= 3.0.1, which is incompatible with the current version, 2.7.6
Error: failed to run `/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/bin/bundle install`!
Error: Kernel.exit
/opt/homebrew/Library/Homebrew/extend/kernel.rb:83:in `exit'
/opt/homebrew/Library/Homebrew/extend/kernel.rb:83:in `odie'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/sorbet-runtime-0.5.10461/lib/types/private/methods/call_validation.rb:157:in `call'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/sorbet-runtime-0.5.10461/lib/types/private/methods/call_validation.rb:157:in `validate_call'
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/sorbet-runtime-0.5.10461/lib/types/private/methods/_methods.rb:270:in `block in _on_method_added'
/opt/homebrew/Library/Homebrew/utils/gems.rb:60:in `odie_if_defined'
/opt/homebrew/Library/Homebrew/utils/gems.rb:242:in `install_bundler_gems!'
/opt/homebrew/Library/Homebrew/style.rb:85:in `run_rubocop'
/opt/homebrew/Library/Homebrew/style.rb:53:in `check_style_impl'
/opt/homebrew/Library/Homebrew/style.rb:15:in `check_style_and_print'
/opt/homebrew/Library/Homebrew/dev-cmd/style.rb:73:in `style'
/opt/homebrew/Library/Homebrew/brew.rb:94:in `<main>'

What did you expect to happen?

I wanna known what should I do with this. And complete the pull request process.

Step-by-step reproduction instructions (by running brew commands)

Any command will appear

brew audit --new-cask some_cask -dv
brew style -dv
brew install-bundler-gems -dv
Bo98 commented 1 year ago

What's the output of brew ruby -e "puts $:" (should print a long list of paths), the output of brew ruby -e "puts Gem::VERSION; Gem = nil" (should print a warning), and the output of gem which rubygems?

TMTBO commented 1 year ago

@Bo98

brew ruby -e "puts $:"


▶ brew ruby -e "puts $:"
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/bundler-2.4.18/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/warning-1.3.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/tapioca-0.7.3/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/yard-sorbet-0.6.1/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/yard-0.9.34/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/stackprof-0.2.25/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/extensions/universal-darwin-22/2.6.0/stackprof-0.2.25
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/spoom-1.1.11/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/thor-1.2.2/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/sorbet-static-and-runtime-0.5.10461/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/sorbet-0.5.10461/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/sorbet-static-0.5.10461-universal-darwin-22/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/simplecov-cobertura-2.1.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/simplecov-0.22.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/simplecov_json_formatter-0.1.4/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/simplecov-html-0.12.3/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-prof-1.4.3/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/extensions/universal-darwin-22/2.6.0/ruby-prof-1.4.3
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-macho-4.0.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-sorbet-0.7.3/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-2.20.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rails-2.19.1/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-performance-1.17.1/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-capybara-2.18.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-1.50.2/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/unicode-display_width-2.4.2/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.13.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-ast-1.29.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rspec_junit_formatter-0.6.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rspec-sorbet-1.9.2/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rspec-retry-0.6.2/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rspec-its-1.3.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rspec-github-2.4.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rspec-3.12.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.12.6/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.12.3/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.12.2/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.12.1/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ronn-0.7.3/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rexml-3.2.6/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rdiscount-2.2.7.1/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/extensions/universal-darwin-22/2.6.0/rdiscount-2.2.7.1
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rbi-0.0.14/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/unparser-0.6.4/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rack-3.0.8/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/pry-0.14.2/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/plist-3.7.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/patchelf-1.4.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/parlour-8.1.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/sorbet-runtime-0.5.10461/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rainbow-3.1.1/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/parser-3.2.2.3/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/racc-1.7.1/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/extensions/universal-darwin-22/2.6.0/racc-1.7.1
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/parallel_tests-3.13.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/parallel-1.23.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/mustache-1.1.1/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/method_source-1.0.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/json_schemer-2.0.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/simpleidn-0.2.1/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/unf-0.1.4/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.8.2/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/extensions/universal-darwin-22/2.6.0/unf_ext-0.0.8.2
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/regexp_parser-2.8.1/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/json-2.6.3/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/extensions/universal-darwin-22/2.6.0/json-2.6.3
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/hpricot-0.8.6/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/extensions/universal-darwin-22/2.6.0/hpricot-0.8.6
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/hana-1.3.7/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/elftools-1.2.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/docile-1.4.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.5.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/did_you_mean-1.6.3/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/commander-4.6.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/highline-2.0.3/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/coderay-1.1.3/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/byebug-11.1.3/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/extensions/universal-darwin-22/2.6.0/byebug-11.1.3
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.16.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/extensions/universal-darwin-22/2.6.0/bootsnap-1.16.0
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/msgpack-1.7.2/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/extensions/universal-darwin-22/2.6.0/msgpack-1.7.2
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/bindata-2.4.15/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/ast-2.4.2/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/addressable-2.8.5/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/public_suffix-5.0.3/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/activesupport-6.1.7.6/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.6.11/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/tzinfo-2.0.6/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/minitest-5.20.0/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/i18n-1.14.1/lib
/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.2.2/lib/concurrent-ruby
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/vendor_ruby/2.6.0
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/vendor_ruby/2.6.0/arm64e-darwin22
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/vendor_ruby/2.6.0/universal-darwin22
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/vendor_ruby
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/arm64e-darwin22
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/universal-darwin22
/opt/homebrew/Library/Homebrew
> brew ruby -e "puts Gem::VERSION; Gem = nil"

▶ brew ruby -e "puts Gem::VERSION; Gem = nil" 3.0.3.1 -e:1: warning: already initialized constant Gem /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems.rb:11: warning: previous definition of Gem was here


> gem which rubygems

▶ gem which rubygems /Users/xpeng/.rbenv/versions/3.2.2/lib/ruby/site_ruby/3.2.0/rubygems.rb

Bo98 commented 1 year ago

Sorry, last one should have been /usr/bin/gem which rubygems - can you run that one instead?

TMTBO commented 1 year ago

@Bo98 Yes, this is the output

▶ /usr/bin/gem which rubygems
/Library/Ruby/Site/2.6.0/rubygems.rb
Bo98 commented 1 year ago

Ok seems like you have a downgraded version of RubyGems installed in your system Ruby. System Ruby comes with 3.0.3.1 but you have installed 2.7.6 to /Library/Ruby/Site/2.6.0/. I've partially worked around this before (https://github.com/Homebrew/brew/commit/8cb056c657756abe6f225eeb85dd01e403004bbf) which is why it doesn't appear when doing brew ruby, but it seems more is needed for that to apply to Bundler.

TMTBO commented 1 year ago

I have tried update the gem with sudo /usr/bin/gem update --system, but got permissions deny

▶ sudo /usr/bin/gem update --system
Updating rubygems-update
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /usr/bin directory.
Bo98 commented 1 year ago

I'd probably just remove the copy you have in /Library/Ruby/Site/2.6.0. The default version lives elsewhere in /System/Library, and the very latest RubyGems from gem update --system no longer supports Apple's Ruby (hence your error).

TMTBO commented 1 year ago

It works! I removed /Library/Ruby/Site/2.6.0, and it works now! Thank you very much.