Homebrew brew update 长时间没反应(或卡在 Updating Homebrew...)

一、问题简介

    Mac Homebrew 安装与卸载

    有时候在 brew update、brew install xxx … 命令的时候会长时间没反应或者卡在 Updating Homebrew...。

    原因是:由于我们安装的 brew 默认 repo 是官方的 repo,出于国内特殊原因无法连接,所以使用 Alibaba 的 Homebrew 镜像源进行加速后问题就能解决。

    平时我们执行 brew 命令安装软件的时候,跟下面 3 个仓库地址有关:

   

brew.git
homebrew-core.git
homebrew-bottles

二、解决办法(按步骤依次替换下去,后续可还原)

替换 brew.git 仓库地址

cd "$(brew --repo)"
git remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git

    还原:

cd "$(brew --repo)"
git remote set-url origin https://github.com/Homebrew/brew.git

替换 homebrew-core.git 仓库地址:

cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.aliyun.com/homebrew/homebrew-core.git

    还原:

cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://github.com/Homebrew/homebrew-core.git

替换 homebrew-bottles 访问地址:

    1、这个步骤跟 macOS 系统使用的 shell 版本有关系,先查看 shell 版本

echo $SHELL

    会输出

/bin/zsh

或

/bin/bash

    2、如果输出 /bin/zsh,访问地址换成这个:

echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.zshrc
source ~/.zshrc

    还原:

vi ~/.zshrc
# 然后,删除 HOMEBREW_BOTTLE_DOMAIN 这一行配置
source ~/.zshrc

    3、如果输出 /bin/bash,访问地址换成这个:

echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.bash_profile
source ~/.bash_profile

    还原:

vi ~/.bash_profile
# 然后,删除 HOMEBREW_BOTTLE_DOMAIN 这一行配置
source ~/.bash_profile

    配置到这里就结束了,可以再次执行

brew update

    如果正常运行,可以不用往下看了!!
    如果不行,就继续看:

brew doctor
# 输出如下的错误信息
/usr/local/Homebrew/Library/Homebrew/global.rb:12:in `require': cannot load such file -- active_support/core_ext/object/blank (LoadError)
from /usr/local/Homebrew/Library/Homebrew/global.rb:12:in `<top (required)>'
from /usr/local/Homebrew/Library/Homebrew/brew.rb:23:in `require_relative'
from /usr/local/Homebrew/Library/Homebrew/brew.rb:23:in `<main>'

    无论报什么错误,先不管,执行以下命令

brew update-reset

    等待更新完成之后,再次执行

brew update

    如果正常运行,可以不用往下看了!!
    如果报错 homebrew-core is a shallow clone.

    Error:
      homebrew-core is a shallow clone.
    To `brew update`, first run:
      git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow
    This command may take a few minutes to run due to the large size of the repository.
    This restriction has been made on GitHub's request because updating shallow
    clones is an extremely expensive operation due to the tree layout and traffic of
    Homebrew/homebrew-core and Homebrew/homebrew-cask. We don't do this for you
    automatically to avoid repeatedly performing an expensive unshallow operation in
    CI systems (which should instead be fixed to not use shallow clones). Sorry for
    the inconvenience!

    删除 homebrew-core 后更新即可

cd /usr/local/Homebrew/Library/Taps/homebrew
rm -rf homebrew-core
brew upgrade

    使用 $ brew upgrade 后会重新更新 homebrew-core
    如果 $ brew upgrade 安装速度太慢,直接 control + c 停下来,按下面的方式进行安装

    // 进入 Taps 文件夹

cd /usr/local/Homebrew/Library/Taps

    // 新建 homebrew 文件并进入,如果有这个文件可以直接进入
 

mkdir homebrew && cd homebrew
# 或
cd homebrew

    // Git 下载

git clone git://mirrors.ustc.edu.cn/homebrew-core.git

成功之后,执行安装命令,中途需要回车确认:

/bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install.sh)"

    最后看到 ==> Installation successful! 就说明安装成功了。

    最后可以在更新一下,一般现在已经是最新版本了,然后就可以通过 brew 进行安装工具了。

brew update

 

<think>好的,我现在需要解决用户关于Homebrew更新时遇到的浅克隆问题。用户提到在安装软件时,提示需要更新gitbrew,而错误信息显示homebrew-core是一个浅克隆(shallow clone),导致无法正常更新。我需要先理解这个问题的原因,然后找到正确的解决方法。 首先,回忆一下Homebrew的工作原理。Homebrew使用Git仓库来管理其软件包,其中homebrew-core是主要的仓库之一。浅克隆是指克隆仓库时只下载最近的提交历史,而不是完整的版本历史。这样做可以节省时间和空间,但可能导致后续更新时出现问题,因为某些操作需要完整的提交历史。 根据用户提供的引用内容,特别是引用[1]、[2]、[3]、[4],错误信息明确指出需要将homebrew-core从浅克隆转换为完整克隆。解决方法包括运行特定的git命令来获取完整的提交历史,者删除并重新克隆仓库。 接下来,我需要整理出具体的解决步骤。引用[2]中提到的命令是git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow。这个命令的作用是获取完整的提交历史,将浅克隆转换为完整克隆。引用[3]提到另一种方法,即删除homebrew-core目录后重新安装。引用[4]则指出如果fetch超时,可能需要分步骤进行。 可能的步骤包括: 1. 运行git fetch --unshallow命令来获取完整历史。 2. 如果步骤1超时失败,尝试分步骤进入目录后执行git fetch。 3. 如果仍然不行,删除homebrew-core目录并重新安装。 4. 最后运行brew updatebrew upgrade确保一切正常。 需要注意的是,用户可能对命令行操作不太熟悉,因此需要给出清晰的路径和命令,并提醒可能需要处理网络问题,比如使用代理更换镜像源。此外,引用[3]中的方法涉及删除目录,可能存在风险,需谨慎操作,但Homebrew通常会自动重建必要的目录。 最后,验证解决方案是否有效,并生成相关问题帮助用户进一步了解可能遇到的问题,比如处理超时、更换镜像源等。</think>### 逐步解决方案 #### 问题背景 当执行`brew update`安装软件时,若提示`homebrew-core is a shallow clone`,说明Homebrew的`homebrew-core`仓库是浅克隆(仅包含部分提交历史),导致无法正常更新。以下是解决方法: --- #### **步骤1:直接修复浅克隆(推荐)** 运行以下命令,将`homebrew-core`从浅克隆转为完整克隆: ```bash git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow ``` 此命令会下载完整的Git提交历史。若网络超时(常见于国内),可尝试分步操作: 1. 进入`homebrew-core`目录: ```bash cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core ``` 2. 分段拉取提交历史: ```bash git fetch --depth=100 # 先拉取100条历史 git fetch --unshallow # 再拉取剩余历史 ``` 若仍超时,可能需要使用代理更换镜像源(见步骤3)[^4]。 --- #### **步骤2:删除并重新克隆(备用方案)** 若步骤1失败,可删除`homebrew-core`后通过`brew upgrade`自动重建: 1. 删除现有仓库: ```bash rm -rf /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core ``` 2. 重新拉取完整仓库: ```bash brew upgrade ``` Homebrew会自动补全缺失的仓库[^3]。 --- #### **步骤3:处理网络问题(如超时)** 若因网络问题导致`git fetch`超时,可尝试: 1. **更换Homebrew镜像源**(如清华源): ```bash git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git ``` 然后重新执行`git fetch --unshallow`。 2. **使用代理**(如有): ```bash git config --global http.proxy http://127.0.0.1:7890 # 替换为实际代理端口 ``` --- #### **验证修复** 最后运行以下命令确认问题解决: ```bash brew update # 应不再报错 brew doctor # 检查Homebrew整体状态 ``` --- ### 相关问题 1. 如何更换Homebrew的镜像源以加速下载? 2. `brew doctor`提示有其他问题,该如何排查? 3. 安装软件时遇到权限被拒绝(Permission Denied)如何解决? 4. 如何彻底卸载并重新安装Homebrew
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值