根本原因是homebrew拉取cask元数据或安装包时受境外网络限制,需切换中科大/清华镜像源:执行git命令替换homebrew/cask、brew、homebrew/core远程地址,并设置homebrew_bottle_domain环境变量指向镜像,再brew update验证;个别软件需手动修改cask文件中的url为镜像链接。
mac 上用 brew install --cask 安装软件时出现网络超时(如 connection timed out、failed to connect、curl: (7) failed to connect),根本原因不是 cask 本身出错,而是 homebrew 在拉取 cask 元数据或下载应用安装包(.dmg/.zip)时,访问 github 或官方分发域名受阻。解决重点是绕过境外网络瓶颈,换用国内镜像源 + 合理配置。
确认并切换到中科大或清华镜像源
Homebrew 的 cask 数据(即软件列表和安装脚本)默认从 https://github.com/Homebrew/homebrew-cask 获取,国内直连极不稳定。必须手动替换为镜像地址:
- 执行命令切换 cask 仓库源(推荐中科大,同步频率高):
git -C "$(brew --repo homebrew/cask)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-cask.git - 同时确保主仓库和 core 仓库也已换源(否则
brew update仍会失败):git -C "$(brew --repo)" remote set-url origin https://mirrors.ustc.edu.cn/brew.gitgit -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git - 运行
brew update验证是否能快速完成——成功即说明镜像源生效
跳过 GitHub 下载,改用镜像加速安装
即使 cask 元数据已换源,部分软件(如 balenaetcher、visualstudiocode)的安装包仍托管在 GitHub Releases,直接下载仍会超时。这时可启用 Homebrew 的 mirror 功能:
- 设置环境变量强制使用镜像下载:
export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles
(该变量对 cask 中部分托管在 GitHub 的二进制包也有效) - 将这行加入你的 shell 配置文件(如
~/.zshrc)避免每次重设:echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.zshrc && source ~/.zshrc - 再执行
brew install --cask xxx,多数常用软件会自动从中科大镜像下载安装包
遇到个别软件仍失败?手动指定镜像链接
少数 cask(如 wechat、qq)的 url 是硬编码的官网地址,无法被 HOMEBREW_BOTTLE_DOMAIN 覆盖。此时可临时修改其 cask 文件:
- 用命令打开对应 cask 的 Ruby 脚本:
brew tap homebrew/cask-versions && brew cask info xxx(先查是否存在),再brew create --cask xxx或直接编辑:vim $(brew --prefix)/Homebrew/Library/Taps/homebrew/homebrew-cask/Casks/xxx.rb - 找到
url行,把原始 GitHub URL 替换为镜像地址,例如:
原:url "https://github.com/xxx/yyy/releases/download/v1.0.0/yyy.dmg"
改为:url "https://mirrors.ustc.edu.cn/github-release/xxx/yyy/v1.0.0/yyy.dmg"(中科大提供 GitHub Release 镜像服务) - 保存后重试
brew install --cask xxx
补充检查项:别让本地设置拖后腿
镜像源配好了,但还是超时?可能是这些细节被忽略:
-
关闭代理或 PAC 脚本:终端中运行
env | grep -i proxy,如有输出,用unset http_proxy https_proxy临时清除;Safari/Chrome 的自动代理配置也会影响curl行为 - 确认没开「无线局域网助理」或「智能DNS」:macOS 设置 → 网络 → 高级 → DNS,删除非常规 DNS(如 114.114.114.114 可能干扰 GitHub 解析)
-
防火墙未拦截
brew:系统设置 → 隐私与安全性 → 防火墙 → 防火墙选项,确认终端或brew进程未被阻止










