【问题标题】:Error while trying to update brew package manager尝试更新 brew 包管理器时出错
【发布时间】:2011-10-19 12:33:19
【问题描述】:

我尝试更新 brew:

sudo brew update

但是我收到了这个错误:

错误:您对以下文件的本地更改将被合并覆盖:

列出很多文件

错误:执行 git pull http://github.com/mxcl/homebrew.gitmaster 时失败

知道出了什么问题吗?

【问题讨论】:

  • Homebrew 建议不要使用sudo,所以你应该可以在没有它的情况下运行brew update
  • 某些 OS X El Capitan 用户会出于不同的原因遇到此问题。见my answer below
  • 不要将 sudo 用于 Homebrew

标签: macos homebrew package-managers


【解决方案1】:

有一个 bug in Homebrew 几天前刚刚修复。要修复该错误,您可以在 Homebrew 安装中运行 git reset --hard FETCH_HEAD。由于这不会修复已被视为已修改的文件,您还可以运行 git checkout Library 以用最新文件替换您的结帐。 (这会擦除所有编辑,因此请对您所做的任何内容采取适当的措施。)

【讨论】:

  • 我在 /usr/local 中运行 git reset --hard FETCH_HEAD 但我得到:致命:不明确的参数 'FETCH_HEAD':修订版和文件名
  • 原因是我曾经用 sudo 运行过 brew。这创建了一些具有错误权限的文件(由 root 拥有)。一旦我 chown'ed 文件,然后运行 ​​git reset,一切都很好。谢谢!
  • 我得到了同样的“致命”,但我不知道要 chown 什么文件,我怎样才能发现它?
  • @rafa sudo chown -R $(whoami) /usr/local
【解决方案2】:

/usr/local(这是 brew 安装!)中的存储库无缘无故(或者至少我不会理解)丢失了它的远程存储库。因此,git resetgit pullbrew update 都不会起作用。

你怎么知道这件事发生了?检查/usr/local/.git/config是否有类似下面的行:

[remote "origin"]
url = http://github.com/mxcl/homebrew.git
fetch = +refs/heads/*:refs/remotes/origin/*

如果不这样做:

cd /usr/local
git remote add origin http://github.com/mxcl/homebrew.git
git pull origin master

【讨论】:

  • 这也发生在我身上!谢谢@Achim
【解决方案3】:

让我补充一下:cd /usr/local/git 然后运行git reset --hard FETCH_HEAD

【讨论】:

    【解决方案4】:

    接受的答案正确但不完整。如果您收到

    的错误

    错误:以下未跟踪的工作树文件将被合并覆盖:

    然后转到您的终端并运行这些命令

    cd /usr/local
    

    然后

    git reset --hard FETCH_HEAD
    

    然后

    git checkout Library
    

    这应该让一切都井井有条。然后运行

    brew update
    

    【讨论】:

      【解决方案5】:

      转到您的终端并运行这些命令

      cd /usr/local
      
      sudo git reset --hard FETCH_HEAD
      
      sudo git checkout Library
      

      【讨论】:

        【解决方案6】:

        对于那些使用 OS X El Capitan 的人来说,您的问题可能是系统完整性保护。

        如果/usr/local 已经存在,请在终端中运行以下命令:

        sudo chown -R $(whoami):admin /usr/local
        

        如果/usr/local 不存在:

        首先,尝试以正常方式创建/usr/local

        sudo mkdir /usr/local && sudo chflags norestricted /usr/local && sudo chown -R $(whoami):admin /usr/local
        

        如果您看到权限问题,请尝试:

        1. 重新启动进入恢复模式(在启动时按住 Cmd+R)并访问终端。
        2. 在那个终端运行:csrutil disable
        3. 重新启动到 OS X
        4. 打开您的终端应用程序并从上面执行该行
        5. 重新启动进入恢复模式并再次访问终端。
        6. 在那个终端执行:csrutil enable
        7. 重新启动回到 OS X,您就可以写入 /usr/local 并安装 Homebrew。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-05-26
          • 1970-01-01
          • 2016-01-28
          • 2011-05-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-17
          相关资源
          最近更新 更多