没有这个桶:/usr/local/Cellar/git

77
我已经苦恼了几个小时。我使用的是Yosemite操作系统的Mac电脑。我之前安装了homebrew并且成功地使用了git。但是当我尝试执行$git add -i时,我遇到了这个错误:

Can't locate Git.pm in @INC (@INC contains:

所以我按照这里的说明进行操作: Can't locate Git.pm in @INC

$brew uninstall git 命令正常运行,但是在我尝试执行$brew install git时,我陷入了一个可怕的循环中。

% brew install git

Error: git-git already installed
To install this version, first `brew unlink git'
% brew unlink git
Error: No such keg: /usr/local/Cellar/git
% brew link git
Error: No such keg: /usr/local/Cellar/git
% git --version
git version 1.9.3 (Apple Git-50)
% brew upgrade git
==> Upgrading 1 outdated package, with result:
git 2.2.2
Error: /usr/local/Library/LinkedKegs/git is not a valid keg
% brew install git
Error: git-git already installed
To install this version, first `brew unlink git'
%

我只想让homebrew和git恢复正常,并重新链接到正确的仓库。我在这方面很生疏,所以任何帮助都将不胜感激!


1
brew doctor 的输出是什么? - brownmike
嘿,谢谢回复。这只是提到xcode过时的一句话:`%brew doctor 请注意,这些警告仅用于帮助Homebrew维护人员进行调试,如果您提交问题。如果您使用Homebrew的所有内容都正常工作:请不要担心,只需忽略它们。谢谢!警告:您的Xcode(6.1)已过时 请更新到Xcode 6.1.1。 Xcode可以从App Store更新。` - flareartist
好的,你能否成功运行 brew update 命令而不出现错误? - brownmike
1
是的,似乎如此。 % brew update 从 fe048363 更新 Homebrew 到 a41d46bb。 ==> 新配方 why3 ==> 更新的配方 cmake galen juju slimerjs tippecanoe xulrunner - flareartist
“type git”的输出是什么? - brownmike
它输出: git 是 /usr/bin/git - flareartist
3个回答

145

再试一次强制删除 git 的已安装版本。

brew uninstall --force git

然后清理任何旧版本并清除brew缓存

brew cleanup -s git

删除任何无效的符号链接

brew cleanup --prune-prefix

那么请尝试重新安装git

brew install git
如果这样做行不通,我会完全删除那个Homebrew安装,并重新安装它。如果你没有将其他东西放在 brew --prefix 目录中(默认情况下为/usr/local),则可以简单地使用rm -rf $(brew --prefix)命令来删除它。否则,Homebrew Wiki建议使用位于https://gist.github.com/mxcl/1173223#file-uninstall_homebrew-sh的脚本。

2
卸载并重新安装Homebrew是唯一让我摆脱这个麻烦的方法。 - Matt Florence
2
@MattFlorence 你是怎么卸载Homebrew的?我到处都看到说必须安装Git才能删除Homebrew。 - madphp
在最新的 OS X 中,我遇到了以下错误: "错误:Mojave 上必须安装命令行工具头文件包。" - J A S K I E R
24
brew cleanup --force doesn't exist anymore, just use brew cleanup -s git - JKHA
12
另外,brew prune 已经不存在了,请使用 brew cleanup --prune-prefix - flp
在我的电脑上,它是 "brew cleanup -s ..." 而不是 "--force"。 - Hermann Klecker

4

Os X Mojave 10.14有:

错误:必须在Mojave上安装命令行工具头文件包。

解决方法。前往

/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

位置手动安装该包。然后,Homebrew将开始工作,我们可以运行:

brew uninstall --force git
brew cleanup -s git
brew cleanup --prune-prefix
brew install git

6
brew prune does not exist, use brew cleanup --prune-prefix - dgilperez
1
错误:无效选项:--force - ttfreeman

4

在使用homebrew安装"Lua"时,在OS X上遇到了类似的问题。我想这对于其他在homebrew中遇到类似问题的用户可能会有用。

执行以下命令:

$ brew install lua

该命令返回一个错误:

错误:/usr/local/opt/lua不是有效的keg
(通常错误可能是/usr/local/opt/不是有效的keg)

通过删除它所引用的文件/目录,即删除"/usr/local/opt/lua"文件,解决了这个问题。

root-user # rm -rf /usr/local/opt/lua

然后运行brew install命令便成功了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接