使用 brew 升级 git 给出:没有这样的文件或目录 - /usr/local/Cellar/git?

Upgrading git with brew gives: No such file or directory - /usr/local/Cellar/git?

我正在尝试升级 git。我正在 运行 升级 git 和随 Xcode 一起安装的 git 版本,这似乎是常见的路径问题的变体。我是 git 的新手,总体上对编程还很陌生。请记住这一点,谢谢。

我是 运行宁 OSX 10.9.5 并且有 Xcode 6.1.1。

我按照此处的说明操作:blog post

当我 运行 brew doctor 我收到一堆警告:

Please note that these warnings are just used to help the Homebrew maintainers with debugging if you file an issue. If everything you use Homebrew for is working fine: please don't worry and just ignore them. Thanks!

警告:Python 安装在 /Library/Frameworks/Python.framework

Homebrew 仅支持针对系统提供的 Python 或 酿造 Python。特别是,安装到 /Library 的 Pythons 可以 干扰其他软件安装。

警告:在 /usr/local/lib 中发现了未酿造的 dylib。如果你没有 故意把它们放在那里它们可能会在构建时引起问题 自制公式,可能需要删除。

意外的动态库: /usr/local/lib/libtcl8.6.dylib /usr/local/lib/libtk8.6.dylib

警告:在 /usr/local/include 中发现了未编译的头文件。如果 你不是故意把它们放在那里的,它们可能会在什么时候引起问题 构建 Homebrew 公式,可能需要删除。

意外的头文件: /usr/local/include/fakemysql.h /usr/local/include/fakepq.h /usr/local/include/fakesql.h /usr/local/include/itcl.h /usr/local/include/itcl2TclOO.h /usr/local/include/itclDecls.h /usr/local/include/itclInt.h /usr/local/include/itclIntDecls.h /usr/local/include/itclMigrate2TclCore.h /usr/local/include/itclTclIntStubsFcn.h /usr/local/include/mysqlStubs.h /usr/local/include/odbcStubs.h /usr/local/include/pqStubs.h /usr/local/include/tcl.h /usr/local/include/tclDecls.h /usr/local/include/tclOO.h /usr/local/include/tclOODecls.h /usr/local/include/tclPlatDecls.h /usr/local/include/tclThread.h /usr/local/include/tclTomMath.h /usr/local/include/tclTomMathDecls.h /usr/local/include/tdbc.h /usr/local/include/tdbcDecls.h /usr/local/include/tdbcInt.h /usr/local/include/tk.h /usr/local/include/tkDecls.h /usr/local/include/tkPlatDecls.h

警告:在 /usr/local/lib/pkgconfig 中发现了未经处理的 .pc 文件。如果 你不是故意把它们放在那里的,它们可能会在什么时候引起问题 构建 Homebrew 公式,可能需要删除。

意外的 .pc 文件: /usr/local/lib/pkgconfig/tcl.pc /usr/local/lib/pkgconfig/tk.pc

警告:在 /usr/local/lib 中发现了未编译的静态库。如果 你不是故意把它们放在那里的,它们可能会在什么时候引起问题 构建 Homebrew 公式,可能需要删除。

意外的静态库: /usr/local/lib/libtclstub8.6.a /usr/local/lib/libtkstub8.6.a

警告:/usr/bin 出现在 /usr/local/bin 之前 这意味着 系统提供的程序将被使用,而不是那些由 自制。两个路径都存在以下工具:

2to3
easy_install
easy_install-2.7
gcc-4.2

考虑设置您的 PATH,以便 /usr/local/bin 出现在 /usr/bin。这是一个单行: echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile

一开始我根据 brew 消息忽略了这些错误,但是当我 运行 brew upgrade git 我得到以下信息:

Error: No such file or directory - /usr/local/Cellar/git

在谷歌搜索问题后,我发现人们通过编辑他们的 bash.profile 解决了类似的问题(指定的相同错误不同路径),所以我 运行 echo 命令

echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile

我也试过了

echo export PATH='/usr/local/Cellar/git:$PATH' >> ~/.bash_profile

并尝试使用 nano 手动将这些导出路径命令添加到我的 .bash_profile,但是 none 这似乎有所帮助。

任何帮助将不胜感激?

我假设您已经安装了 git 的某个版本? (输入 git --versionwhich git 进行检查。)如果您不这样做,请继续并让 brew install git 完成。

但是,假设您已经安装了 git:

选项1:如果brew无法识别当前git安装

总的来说,这是一个超级快速的修复...对我有用

运行 $ brew upgrade git

如果结果告诉您 not installed,那么 brew 无法识别当前安装...您最快的选择是让 brew 从头开始​​安装:

  1. 重命名现有的 Apple 安装 git (example)
  2. 让brew通过brew install git(example)安装最新版本

第 1 步,重命名 Apple 安装的 git,只是避免 Apple 安装的 Git 与您通过 Homebrew 安装的新安装之间发生冲突的一种方法。有关第二个示例,请参阅您链接到的博客上的其他 post 以获取更多信息: http://rayhightower.com/blog/2014/12/18/git-vulnerability-on-mac-os-x/

选项 2:让 brew 识别您拥有的 git 安装

如果您认为以上内容过于笨拙,让旧的 git 安装在您的计算机上闲置...

另一种选择可能是使用链接?我最初的尝试是 brew link didn't work for me. I didn't try to solve via a symlink or by defining any $PATH。肯定有一个比简单地放弃现有安装更简洁的选择,但选项 1 对我今天来说已经足够了。

所以我通过卸载git两次然后重新安装最新版本的git解决了这个问题。这删除了 ​​git 的预安装版本和我安装的版本,消除了路径问题。我运行:

which git

然后是运行sudo rm -rf /absolute/path/to/git

删除了已安装的 git 程序之一。然后我再次 运行 这两个命令,但是第二次 which git 返回了我在第二次 sudo rm -rf /absolute/path/to/git 中使用的不同路径。最后,我使用 brew 安装了 git。

不是火箭科学,但它似乎奏效了。

这对我有用:

  1. 重命名现有的 Apple 安装 git ()

  2. 修复 brew 的安装 git ()

绝不是专家,但对我来说,我基本上做到了:

  1. 备份原git目录
  2. 使用 Homebrew 安装 Git
  3. 重新启动(或来源)shell

~ > which git
/usr/bin/git
~ > sudo mv /usr/bin/git /usr/bin/git-original
~ > which git
git not found
~ > brew install git
~ > source /etc/profile
~ > git --version
git version 2.4.3