我已经搜索了一下,似乎无法找到任何有这个问题的人的记录。
每当我尝试运行
$ 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进行项目,它效果更好”的事情......
答案 0 :(得分:10)
我很确定这是因为早期版本的Homebrew 0.9.5升级尝试失败。基本上,如果您运行brew update
而不是sudo brew update
,则会更新一部分文件,而其他文件则不会。这对我有用:
编辑/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仍然被破坏,但至少现在它的负载足以提供错误消息。
运行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的人都知道错误信息。我们也可以解决这个问题。
使用cd /usr/local
切换到自制的git存储库,并输入命令git reset --hard FETCH_HEAD
。
This piece found here
发出命令sudo brew update
。 Homebrew现在应该成功更新并正常工作!
一旦系统再次运行,您实际上可以看到为什么会发生这样的错误。例如,usr/local/bin/brew
已经completely rewriten,甚至不再是Ruby,并且其大部分配置已移至/usr/local/Library/brew.rb
,不再使用常量MACOS
或{ {1}}常量,因为它们已被更加面向对象的MACOS_VERSION
和OS.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 .
答案 4 :(得分:0)
除了Matt Korostoff的答案。
在第3点(重置存储库)上,对于最新版本的Homebrew,该存储库不再是/usr/local
,而是执行cd "$(brew --repo)"
。