为何brew运行极慢?求非重启类排查解决办法
我之前也碰到过brew命令奇慢无比的情况,结合自己踩过的坑和社区里的解决方案,给你整理几个实打实的排查方向,试试从这些点入手:
1. 先排查DNS解析问题
brew的很多操作依赖访问GitHub、Raw.githubusercontent这些域名,如果DNS解析慢,整个流程都会被拖慢。
- 测试关键域名的解析速度:运行
dig github.com和dig raw.githubusercontent.com,看返回结果里的Query time,正常应该在几十毫秒内,如果超过几百毫秒甚至几秒,那DNS就是问题所在。 - 更换公共DNS:比如改成114.114.114.114或者8.8.8.8,改完后刷新macOS的DNS缓存:
- Ventura及以上系统:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder - 旧版macOS:
sudo killall -HUP mDNSResponder
- Ventura及以上系统:
2. 切换国内镜像源
默认的brew源在国外,网络波动大的时候访问速度会特别慢,换成国内镜像能立竿见影。
- 先备份当前源配置(防止出问题能恢复):
cp "$(brew --repo)/.git/config" "$(brew --repo)/.git/config.bak" cp "$(brew --repo homebrew/core)/.git/config" "$(brew --repo homebrew/core)/.git/config.bak" cp "$(brew --repo homebrew/cask)/.git/config" "$(brew --repo homebrew/cask)/.git/config.bak" - 替换为清华镜像源(中科大源也可以,步骤类似):
git -C "$(brew --repo)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git git -C "$(brew --repo homebrew/cask)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask.git - 刷新缓存:
brew update - 如果之后想恢复默认源,把备份的config文件替换回去即可。
3. 禁用或调整brew自动更新
默认情况下,每次执行brew命令都会自动检查更新,这个过程如果网络慢就会拖很久。
- 临时禁用测试:执行命令前加上
HOMEBREW_NO_AUTO_UPDATE=1,比如HOMEBREW_NO_AUTO_UPDATE=1 brew --version,如果速度明显变快,那就是自动更新在拖后腿。 - 永久禁用自动更新:把环境变量加到你的shell配置文件(比如
~/.zshrc或~/.bashrc)里:echo 'export HOMEBREW_NO_AUTO_UPDATE=1' >> ~/.zshrc source ~/.zshrc - 或者调整更新间隔(比如每周检查一次):
echo 'export HOMEBREW_AUTO_UPDATE_SECS=604800' >> ~/.zshrc source ~/.zshrc
4. 优化Git配置
brew底层依赖Git同步仓库,Git的一些默认配置可能导致传输慢。
- 增大HTTP缓冲区:
git config --global http.postBuffer 524288000 - 启用最高压缩级别:
git config --global core.compression 9 - 关闭凭证助手(有时候凭证检查会拖慢Git操作):
git config --global --unset credential.helper
5. 清理brew缓存与重置本地仓库
缓存堆积或者本地仓库有损坏也可能导致操作变慢。
- 清理旧缓存:
brew cleanup - 重置brew本地仓库(注意:这会重置源配置,之前换过源的话需要重新设置):
cd "$(brew --repo)" git fetch --prune git reset --hard origin/master brew update-reset
6. 检查网络代理设置
如果你开了全局代理,但代理服务器不稳定或者规则没配置好,brew访问外部资源会变慢。
- 先临时关闭代理,再执行brew命令测试速度,如果变快,说明代理是问题所在。
- 可以让brew强制不使用代理:
echo 'export HOMEBREW_NO_PROXY=1' >> ~/.zshrc source ~/.zshrc
内容的提问来源于stack exchange,提问作者wisbucky
相关产品推荐
相关产品推荐

