OSX Homebrew错误:未初始化的常量MACOS

时间:2012-06-23 22:24:12

标签: macos homebrew

我已经搜索了一下,似乎无法找到任何有这个问题的人的记录。

每当我尝试运行

$ 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进行项目,它效果更好”的事情......

5 个答案:

答案 0 :(得分: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. 使用cd /usr/local切换到自制的git存储库,并输入命令git reset --hard FETCH_HEADThis piece found here

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

  5. 一旦系统再次运行,您实际上可以看到为什么会发生这样的错误。例如,usr/local/bin/brew已经completely rewriten,甚至不再是Ruby,并且其大部分配置已移至/usr/local/Library/brew.rb,不再使用常量MACOS或{ {1}}常量,因为它们已被更加面向对象的MACOS_VERSIONOS.mac所取代。

答案 1 :(得分:3)

MACOS常量在globals.rb中设置。看起来你可能已经安装了Homebrew。

检查brew doctor的输出是否有任何建议。

如果这样做无效,请使用brew --config的结果进行更新。

如果其他所有方法都失败了,您可能需要尝试重新安装Homebrew。


<强>更新

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

答案 2 :(得分:1)

我在使用“borked”装置时遇到了类似的错误。我从MACOS行开始删除/ usr / local / bin / brew脚本中的小5行代码块。这样就可以让我卸载并最终重新安装它。

答案 3 :(得分:1)

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

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

作为解决方法,我转到了安装自制软件的目录,然后重置了HEAD。

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

然后神奇地开始工作。 Resetting Homebrew to master

答案 4 :(得分:0)

除了Matt Korostoff的答案。 在第3点(重置存储库)上,对于最新版本的Homebrew,该存储库不再是/usr/local,而是执行cd "$(brew --repo)"