用 brew 安装软件慢,通常是因为默认的官方源服务器在国外。解决的核心思路就是将默认源替换为国内的镜像源。对于2025年的新版 Homebrew,有一个关键的新步骤需要留意。
💡 核心原因
Homebrew 慢主要是因为它的核心仓库和软件包(Bottles)都托管在GitHub等国外服务器上,国内网络连接不稳定、速度慢。替换为国内镜像(如清华、中科大、阿里云等)可以显著提升速度。
🚀 详细解决方案
第一步:配置环境变量(最关键的一步)
这是当前新版 Homebrew 加速的核心。从2024年起,Homebrew 默认优先通过 API 获取信息,因此除了替换传统的 Git 仓库地址,必须配置 HOMEBREW_API_DOMAIN 环境变量指向国内镜像的 API 地址。
-
打开终端,根据你使用的 Shell,输入以下命令之一来编辑配置文件:
- 如果你使用 zsh (macOS Catalina及以后默认):
open ~/.zshrc - 如果你使用 bash (旧版本macOS):
open ~/.bash_profile
- 如果你使用 zsh (macOS Catalina及以后默认):
-
在打开的文件末尾,添加以下配置。这里以中科大(USTC)镜像 为例,它是目前反馈较好、更新及时的源之一:
bash# Homebrew 国内镜像加速配置 (USTC) # 替换 Homebrew 核心代码仓库 export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.ustc.edu.cn/brew.git" # 替换核心软件包仓库(如果使用 Git 方式) export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.ustc.edu.cn/homebrew-core.git" # 替换预编译二进制包(bottles)的下载地址 export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles" # 重点:替换 Homebrew 的 API 镜像源,解决新版 brew 的更新慢问题 export HOMEBREW_API_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles/api" # (可选)屏蔽环境变量提示,让终端更清爽 export HOMEBREW_NO_ENV_HINTS="1" -
保存文件并退出 ,然后执行以下命令让配置立即生效:
bashsource ~/.zshrc # 如果你用的是 zsh # 或者 source ~/.bash_profile # 如果你用的是 bash
第二步:更换核心仓库的 Git 地址
这一步是替换 Homebrew 本体和核心仓库的 Git 远程地址。在终端中逐条执行以下命令:
bash
# 更换 Homebrew 核心代码仓库
git -C "$(brew --repo)" remote set-url origin https://mirrors.ustc.edu.cn/brew.git
# 更换核心软件包仓库(homebrew-core)
git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
# 更换 Cask 仓库(用于安装GUI应用,如Chrome)
git -C "$(brew --repo homebrew/cask)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-cask.git
第三步:应用配置并更新
运行更新命令,使所有更改生效:
bash
brew update
如果配置正确,这次更新过程会变得非常快。
✨ 其他实用技巧
-
临时禁用自动更新 :如果你急着安装一个软件,不想等待
brew update,可以临时设置环境变量跳过更新。在运行brew install命令前加上它即可:bashHOMEBREW_NO_AUTO_UPDATE=1 brew install <你要安装的软件名>如果想永久生效,可以将
export HOMEBREW_NO_AUTO_UPDATE=1也添加到你的~/.zshrc文件中。 -
清理旧缓存:如果配置后速度提升不明显,可以尝试清理一下 Homebrew 的缓存:
bashbrew cleanup -
如何验证配置成功? 运行
brew config命令,查看输出结果中的HOMEBREW_BREW_GIT_REMOTE、HOMEBREW_BOTTLE_DOMAIN和HOMEBREW_API_DOMAIN是否已经指向了你设置的国内镜像地址。