Homebrew更新需依次更新主程序、core/cask仓库及Bottles源:先确认brew可用,再强制同步主仓库避免detached HEAD;接着手动或一键更新core与cask;最后设Bottles镜像并清理缓存后执行brew update --verbose。

Mac终端更新Homebrew到最新版本,需先确保主程序、核心仓库、Cask仓库和Bottles源全部同步至最新状态,否则可能出现命令失效、安装失败或版本滞后问题。
检查当前Homebrew状态
打开终端,执行:
brew --version
确认已安装且可运行。若提示command not found,请先安装Homebrew。
再运行:
git -C "$(brew --repo)" remote -v
查看主仓库地址是否仍为github.com。若显示origin https://github.com/Homebrew/brew.git,则尚未换源,后续更新极可能卡在Auto-updating阶段。
强制更新Homebrew主程序
这一步更新的是brew命令本身(即/ opt/homebrew/bin/brew或/usr/local/bin/brew),不是软件包。
执行:
brew update
如果一直卡在==> Auto-updating Homebrew…,超过3分钟还没任何反应,就别再干等了,直接按Ctrl + C中断。
接着手动把主程序更新拉下来:
git -C "$(brew --repo)" fetch origin master && git -C "$(brew --repo)" reset --hard origin/master
这步跳过自动检测逻辑,直接强制同步到远程master分支最新提交,【避免因本地HEAD detached导致brew命令异常】。
同步核心仓库与Cask仓库
方法一:逐个更新(更推荐这种做法,控制起来更稳)
① 先更新 homebrew/core:
git -C "$(brew --repo homebrew/core)" fetch origin master && git -C "$(brew --repo homebrew/core)" reset --hard origin/master
② 再更新 homebrew/cask:
git -C "$(brew --repo homebrew/cask)" fetch origin master && git -C "$(brew --repo homebrew/cask)" reset --hard origin/master
方法二:一键触发全量拉取(适合已换源用户)
brew tap-sync && brew update
该命令会遍历所有已tap仓库并fetch,但若某个第三方tap不可达,会导致整体中断——此时应改用方法一单独处理。
刷新Bottles预编译包索引
执行:
brew cleanup -s
清理旧版formula缓存,防止因本地formula.jws.json过期而无法匹配新版bottles。
然后验证Bottles源是否生效:
echo $HOMEBREW_BOTTLE_DOMAIN
应输出类似https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles。若为空,需补设:
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles' >> ~/.zshrc && source ~/.zshrc
最后执行一次完整更新:
brew update --verbose