错误信息
Mac 上 Homebrew 失败并提示“curl: (28)”
Homebrew 用 curl 下载。curl 退出码 28 表示超时。curl 文档的说法是:“The specified time-out period was reached.”(已达到指定的超时时间)
症状
brew install因curl: (28)中止,随后提示时间已用完。- Homebrew 提示下载资源失败。
- 在慢速网络、VPN 或公司网络上下载失败。
可能的原因
- 连接慢或丢包。在信号弱的 Wi-Fi 或热点上,较大的 bottle 会超时。
- curl 没有使用代理。Homebrew 使用
http_proxy、https_proxy和all_proxy。 - 防火墙丢弃流量。如果网络丢弃到下载主机的连接,就会超时。
- IPv6 路径不通。下载主机有 IPv6 地址,而 IPv6 无法使用。
如何检查
让 Homebrew 检查系统。
brew doctor用 curl 测试下载主机,仅使用 IPv4。
curl -4 -I https://ghcr.io/v2/显示代理环境变量。
env | grep -i proxy测量连接质量。
networkQuality
如何修复
让 Homebrew 多重试几次。默认重试 3 次。
export HOMEBREW_CURL_RETRIES=5如果网络需要代理,在同一个 shell 中设置。
export https_proxy=http://proxy.example.com:8080如果公司有镜像,设置
HOMEBREW_BOTTLE_DOMAIN和HOMEBREW_API_DOMAIN。如果可以,换到更快的网络上再运行一次命令。
使用 Kilobat
检查网络是否按流量计费、是否在 VPN 上,或者速度慢。
kilobat conditionsKilobat 的连接诊断逐层测试主机:网络、代理、DNS、规则、IPv4、IPv6、TLS 和服务器,并指出失败的那一层。
kilobat why https://ghcr.io/v2/安装过程中保持 Mac 唤醒。
kilobat awake -- brew upgradeKilobat 的这些检查都是免费的。AI 智能体可以通过 MCP 用
diagnose_connection和diagnose_network运行它们。请参阅找出某个网站或 API 连不上的原因。
常见问题
curl 错误 28 是什么?
它是 CURLE_OPERATION_TIMEDOUT。curl 的 man 手册页将退出码 28 列为操作超时。
参考资料
- curl:libcurl error codes
- curl(1),EXIT CODES,macOS 27.2 自带的 man 手册页
- Homebrew 文档:Manpage,环境变量
- brew(1),HOMEBREW_CURL_RETRIES,Homebrew 自带的 man 手册页
参考资料核查于 2026年10月29日。man 手册页为 macOS 自带版本;在“终端”中用 man <name> 打开。