brew报错:`initialize': Version value must be a string; got a NilClass () (TypeErro

7,018 阅读1分钟

今天兴致勃勃的升级成macOS 11.0后,给电脑安装onedrive的时候,发现运行brew任何命令都会出现以下错误。

 zy-root $  brew cask install onedrive
Traceback (most recent call last):
    11: from /usr/local/Homebrew/Library/Homebrew/brew.rb:23:in `<main>'
    10: from /usr/local/Homebrew/Library/Homebrew/brew.rb:23:in `require_relative'
     9: from /usr/local/Homebrew/Library/Homebrew/global.rb:29:in `<top (required)>'
     8: from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
     7: from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
     6: from /usr/local/Homebrew/Library/Homebrew/os.rb:3:in `<top (required)>'
     5: from /usr/local/Homebrew/Library/Homebrew/os.rb:21:in `<module:OS>'
     4: from /usr/local/Homebrew/Library/Homebrew/os/mac.rb:58:in `prerelease?'
     3: from /usr/local/Homebrew/Library/Homebrew/os/mac.rb:24:in `version'
     2: from /usr/local/Homebrew/Library/Homebrew/os/mac.rb:24:in `new'
     1: from /usr/local/Homebrew/Library/Homebrew/os/mac/version.rb:26:in `initialize'
/usr/local/Homebrew/Library/Homebrew/version.rb:368:in `initialize': Version value must be a string; got a NilClass () (TypeError)

 解决办法:

/usr/local/Homebrew/Library/Homebrew/version.rb中的368行出现问题,因为homebrew只能安装在正式版中运行,测试版本任何命令都是不能运行的。

我们用IDEA打开version.rb文件,只需要将其中的代码修改为以下形式:

  def initialize(val)
    # raise TypeError, "Version value must be a string; got a #{val.class} (#{val})" unless val.respond_to?(:to_str)

    @version = '10.14.6' 或者其他任何macos正式版本即可,推荐使用10.14.6版本
  end