2019 年在 MacBook 安装 Homebrew 时,获取安装脚本失败:

Failed to connect to raw.githubusercontent.com port 443:
Operation timed out

浏览器打开同一地址也失败。这说明当时获取脚本没有成功,但仅凭超时,不能确定是 DNS、代理、链路还是目标服务问题。

先分清失败发生在哪一步

安装通常先获取脚本,再由脚本获取其他资源并修改系统。第一步连接超时,不等于安装器已经运行,也不证明脚本逻辑有错误。

可在自己的网络环境对官方脚本地址做有时间限制的只读请求:

curl --head --connect-timeout 10 --max-time 20 \
  https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh

结合错误区分无法解析、连接超时、TLS 校验失败和 HTTP 状态异常。HEAD 成功只能说明这次请求成功,不能保证后续所有仓库和资源均可访问。

浏览器与命令行还可能使用不同代理和证书环境;记录脱敏错误,不要把包含凭据的代理配置直接贴出。

把脚本复制到本地,仍有后续网络依赖

当时曾尝试保存脚本再执行。但旧安装器后续仍会获取仓库、更新资源,还可能安装开发工具、创建目录和调整权限;复制第一份文件并没有消除这些依赖。

旧 Ruby 安装入口及其系统判断已经属于历史实现,不应继续复制一整份旧安装器,宣称保存运行就能完成今天的安装。

从官方入口决定下一步

确认系统架构、macOS 版本和受支持条件,再按照 Homebrew 官方安装说明选择入口。准备执行任何安装脚本前,检查来源与拟执行操作;若换镜像或脚本来源,也同时改变了需要信任的主体。

不要为绕过一次下载失败而关闭 TLS 校验、随意改 hosts,或运行来历不明的安装器。已经部分安装时,先确认进度和已有文件,不要反复执行不同来源脚本叠加修改。

这次经历可复用的重点是把网络获取和安装执行分开排查,而不是把超时统一归结为某一种网络限制。