Mac Homebrew 更新卡住怎么办?如何更换国内源、查看进度和安装软件

张开发
2026/6/5 23:39:15 15 分钟阅读

分享文章

Mac Homebrew 更新卡住怎么办?如何更换国内源、查看进度和安装软件
一、问题现象在 Mac 上使用 Homebrew 安装软件时经常会遇到这种情况bash brew install php或者bash brew update终端一直停在bash Auto-updating Homebrew…或者bash Updating Homebrew…看起来像卡住了一样等很久也没有明显进度。这种情况通常不是命令错了而是 Homebrew 正在连接 GitHub 或下载索引文件。由于网络原因可能会非常慢。二、Homebrew 为什么会卡住Homebrew 默认会从 GitHub 拉取更新信息比如text Homebrew 主程序 Homebrew 软件源信息 软件包索引 bottles 预编译安装包 第三方 tap如果网络访问 GitHub 很慢就容易卡住。常见卡住位置有bash Auto-updating Homebrew…bash Updating Homebrew…bash Checking if we need to fetch /opt/homebrew…bash Checking if we need to fetch formula.jws.json…bash Checking if we need to fetch /opt/homebrew/Library/Taps/xxx…三、先判断是不是卡死如果终端一直没输出不一定代表卡死。可以先等 35 分钟。如果想看更详细的执行过程可以使用bash brew update --verbose如果还想看更详细的调试信息可以使用bash brew update --debug其中最常用的是bash brew update --verbose它会显示 Homebrew 当前正在更新哪个仓库、哪个 tap、哪个索引文件。四、如果真的卡住了怎么办如果等了很久还是不动可以按bash Ctrl C中断当前命令。然后可以选择更换 Homebrew 国内源跳过自动更新直接安装软件移除卡住的第三方 tap使用 --verbose 查看具体卡在哪里。五、查看当前 Homebrew 源先查看 Homebrew 主仓库地址bash git -C “$(brew --repo)” remote -v如果看到类似bash origin https://github.com/Homebrew/brew.git (fetch) origin https://github.com/Homebrew/brew.git (push)说明当前还是官方 GitHub 源。如果已经换成清华源会看到类似bash origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git (fetch) origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git (push)如果已经换成中科大源会看到类似bash origin https://mirrors.ustc.edu.cn/brew.git (fetch) origin https://mirrors.ustc.edu.cn/brew.git (push)六、更换 Homebrew 源方案一更换为清华源执行bash git -C “$(brew --repo)” remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git然后查看是否成功bash git -C “$(brew --repo)” remote -v如果输出里出现bash https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git说明主仓库已经切换成功。方案二更换为中科大源如果清华源还是慢可以换成中科大源bash git -C “$(brew --repo)” remote set-url origin https://mirrors.ustc.edu.cn/brew.git然后查看是否成功bash git -C “$(brew --repo)” remote -v如果输出里出现bash https://mirrors.ustc.edu.cn/brew.git说明切换成功。七、设置 bottles 下载源Homebrew 安装软件时很多软件会下载预编译包也就是 bottles。如果只换了 brew 主仓库但 bottles 还是官方地址安装软件时依旧可能很慢。使用中科大 bottles 源如果你使用的是 zshMac 默认一般就是 zsh可以执行bash echo ‘export HOMEBREW_BOTTLE_DOMAIN“https://mirrors.ustc.edu.cn/homebrew-bottles”’ ~/.zshrc echo ‘export HOMEBREW_API_DOMAIN“https://mirrors.ustc.edu.cn/homebrew-bottles/api”’ ~/.zshrc source ~/.zshrc验证是否生效bash echo $HOMEBREW_BOTTLE_DOMAIN echo $HOMEBREW_API_DOMAIN如果输出类似bash https://mirrors.ustc.edu.cn/homebrew-bottles https://mirrors.ustc.edu.cn/homebrew-bottles/api说明配置成功。使用清华 bottles 源也可以设置清华源bash echo ‘export HOMEBREW_BOTTLE_DOMAIN“https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles”’ ~/.zshrc echo ‘export HOMEBREW_API_DOMAIN“https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles/api”’ ~/.zshrc source ~/.zshrc验证bash echo $HOMEBREW_BOTTLE_DOMAIN echo $HOMEBREW_API_DOMAIN八、更新 Homebrew更换源后可以执行bash brew update如果想看到详细进度推荐执行bash brew update --verbose如果看到类似下面内容说明它已经开始正常更新了bash Checking if we need to fetch /opt/homebrew… Updating Homebrew… Fetching /opt/homebrew… Updating /opt/homebrew… Current branch stable is up to date. Checking if we need to fetch formula.jws.json…这说明不是卡死而是在更新索引或检查数据。九、跳过自动更新直接安装软件有时候我们的目标只是安装某个软件不一定非要先更新 Homebrew。比如安装 PHPbash brew install php如果它自动更新很慢可以用下面命令跳过自动更新bash HOMEBREW_NO_AUTO_UPDATE1 brew install php如果要安装 PHP 8.1bash HOMEBREW_NO_AUTO_UPDATE1 brew install php8.1安装完成后查看版本bash php -v十、安装指定版本 PHP如果项目使用 Docker 里的text php:8.1-fpm-alpine那么本机更推荐安装 PHP 8.1bash brew install php8.1如果更新太慢就执行bash HOMEBREW_NO_AUTO_UPDATE1 brew install php8.1安装完成后检查bash php -v如果提示找不到 php可以执行bash brew link php8.1 --force --overwrite然后重新打开终端再执行bash php -v十一、homebrew/core 目录不存在怎么办有时候网上教程会让你执行bash git -C “$(brew --repo homebrew/core)” remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git但是可能会报错bash fatal: cannot change to ‘/opt/homebrew/Library/Taps/homebrew/homebrew-core’: No such file or directory这个不一定是问题。新版 Homebrew 可能没有单独 clone homebrew/core 目录它更多是通过 API 获取软件信息。遇到这个报错时可以先不用管 homebrew/core重点确认主仓库是否切换成功bash git -C “$(brew --repo)” remote -v如果主仓库已经是国内源就可以继续bash brew update --verbose或者直接跳过更新安装软件bash HOMEBREW_NO_AUTO_UPDATE1 brew install 软件名十二、第三方 tap 导致更新慢怎么办如果执行bash brew update --verbose时看到类似bash Checking if we need to fetch /opt/homebrew/Library/Taps/sunnyyoung/homebrew-tap…说明你本机安装过第三方 tap。如果某个第三方 tap 很慢也可能导致 Homebrew 更新卡住。可以查看当前有哪些 tapbash brew tap如果确定某个 tap 不再需要可以移除bash brew untap tap名称例如bash brew untap sunnyyoung/tap注意不要随便删除自己还在用的 tap。可以先查一下这个 tap 是做什么的再决定是否移除。十三、常用命令整理查看 Homebrew 版本bash brew -v查看 Homebrew 主仓库位置bash brew --repo查看 Homebrew 当前源bash git -C “$(brew --repo)” remote -v更新 Homebrewbash brew update显示详细更新进度bash brew update --verbose显示调试信息bash brew update --debug检查 Homebrew 环境问题bash brew doctor更新已安装的软件包bash brew upgrade跳过自动更新安装软件bash HOMEBREW_NO_AUTO_UPDATE1 brew install 软件名例如bash HOMEBREW_NO_AUTO_UPDATE1 brew install php8.1查看已安装软件bash brew list查看当前 tapbash brew tap移除不需要的 tapbash brew untap tap名称十四、推荐处理流程如果遇到 brew update 或 brew install 卡住可以按下面流程处理第一步中断当前命令bash Ctrl C第二步查看当前源bash git -C “$(brew --repo)” remote -v第三步切换国内源清华源bash git -C “$(brew --repo)” remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git或者中科大源bash git -C “$(brew --repo)” remote set-url origin https://mirrors.ustc.edu.cn/brew.git第四步设置 bottles 和 API 源以中科大为例bash echo ‘export HOMEBREW_BOTTLE_DOMAIN“https://mirrors.ustc.edu.cn/homebrew-bottles”’ ~/.zshrc echo ‘export HOMEBREW_API_DOMAIN“https://mirrors.ustc.edu.cn/homebrew-bottles/api”’ ~/.zshrc source ~/.zshrc第五步查看更新进度bash brew update --verbose第六步如果还是慢跳过更新直接安装bash HOMEBREW_NO_AUTO_UPDATE1 brew install 软件名例如bash HOMEBREW_NO_AUTO_UPDATE1 brew install php8.1十五、恢复官方源如果以后想恢复 Homebrew 官方源可以执行bash git -C “$(brew --repo)” remote set-url origin https://github.com/Homebrew/brew.git然后编辑 ~/.zshrc删除或注释掉下面几行bash export HOMEBREW_BOTTLE_DOMAIN“…” export HOMEBREW_API_DOMAIN“…”保存后执行bash source ~/.zshrc再更新bash brew update --verbose十六、总结Homebrew 卡住大多数是网络问题不一定是命令错误。常用解决思路是text 1. 用 Ctrl C 中断卡住的命令 2. 用 brew update --verbose 查看具体进度 3. 更换 Homebrew 国内源 4. 设置 bottles 和 API 下载源 5. 如果只是安装软件可以用 HOMEBREW_NO_AUTO_UPDATE1 跳过自动更新 6. 如果第三方 tap 卡住可以考虑移除不需要的 tap最常用的安装命令是bash HOMEBREW_NO_AUTO_UPDATE1 brew install 软件名例如安装 PHP 8.1bash HOMEBREW_NO_AUTO_UPDATE1 brew install php8.1这样可以避免每次安装软件时都被自动更新卡住。

更多文章