9

我搜索了一下,似乎找不到任何其他人有这个问题的记录。

每当我尝试跑步时

$ brew update

我得到了奖励

/usr/local/bin/brew:34: uninitialized constant MACOS (NameError)

这不是我的机器,我通常在 Linux 系统上开发,所以这对我来说有点奇怪。

任何帮助将不胜感激!请告诉我是否应该提供任何其他信息。同样,我不习惯自制软件或 OSX。

应JameA 的要求进行编辑

xiao:~ patrick$ brew doctor
/usr/local/bin/brew:34: uninitialized constant MACOS (NameError)
xiao:~ patrick$ brew --config
/usr/local/bin/brew:34: uninitialized constant MACOS (NameError)

...不确定我是否喜欢整个“在这里,将这台 macbook 用于项目,效果更好”的东西...

4

5 回答 5

10

我很确定这是因为从更早的版本升级到 Homebrew 0.9.5 失败的根本原因。基本上,如果你运行brew update相对于sudo brew update文件的一部分进行更新,而其他的则没有。这对我有用:

  1. 编辑/usr/local/bin/brew(它只是一个 Ruby 文件,不是编译的二进制文件,所以任何文本编辑器都可以)。你会发现一个像这样的块:

    if MACOS and MACOS_VERSION < 10.5
      abort <<-EOABORT.undent
        Homebrew requires Leopard or higher. For Tiger support, see:
        https://github.com/mistydemeo/tigerbrew
      EOABORT
    end
    

    注释掉这个。即使您不了解 Ruby,您也可以直观地知道它在做什么——它正在检查您是否拥有当前版本的 OSX。假设您确实拥有此版本,则无需进行此健全性检查。Brew 仍然坏掉了,但至少现在它会加载到足以给出错误消息的程度。

  2. 运行sudo brew update剧透警报:它失败了,但这次有一个有意义的错误消息:

     $ brew update
     error: Your local changes to the following files would be overwritten by merge:
     [giant list of files here]
    

    好吧,今天我了解到这brew update只是一个包装器,git pull因为任何使用过 git 的人都知道该错误消息。我们也可以解决这个问题。

  3. 切换到 homebrew git 存储库cd /usr/local并给出命令git reset --hard FETCH_HEAD这件作品在这里找到

  4. 发出命令sudo brew update。Homebrew 现在应该成功更新并正常工作!

一旦系统再次运行,您实际上可以看到为什么会发生这样的错误。一方面,usr/local/bin/brew它已被完全重写,甚至不再是 Ruby,并且它的大部分配置已被移入/usr/local/Library/brew.rb不再使用常量MACOSMACOS_VERSION常量,因为它们已被更面向对象OS.macMacOS.version.

于 2014-01-27T17:02:16.853 回答
3

MACOS常数设置在中globals.rb。看来您可能安装了 Homebrew 安装失败。

检查输出以brew doctor获取任何建议。

如果这没有帮助,请更新brew --config.

如果一切都失败了,您可能想尝试重新安装 Homebrew。


更新:

由于这是以前用户的机器,请确保您的用户是/usr/local和其中所有内容的所有者。修复它sudo chown -R $USER /usr/local

于 2012-06-23T23:46:19.197 回答
2

当我使用 Ctrl-D 中途终止安装时,我遇到了类似的问题。发布时,每当我尝试安装任何东西时,都会出现以下错误

uninitialized constant Homebrew::CLI::Parser::ARGV_WITHOUT_MONKEY_PATCHING

作为修复,我去了安装自制软件的目录,然后重置 HEAD。

cd /usr/local/Homebrew
git status 
git checkout .

然后它开始神奇地工作。 将 Homebrew 重置为 master

于 2020-04-25T17:55:46.070 回答
1

我在安装 brew 时遇到了类似的错误。我从 MACOS 行开始删除了 /usr/local/bin/brew 脚本中的 5 行小代码块。这确实让我卸载并最终重新安装它。

于 2013-11-23T01:34:17.197 回答
0

除了马特科罗斯托夫的回答。在第 3 点(重置 repo),对于最新版本的 Homebrew,repo 不再是/usr/localcd "$(brew --repo)"而是改为。

于 2018-09-25T04:42:45.653 回答