錯誤訊息

Mac 上的 Homebrew 失敗並顯示「curl: (28)」

Homebrew 用 curl 下載。curl 結束代碼 28 代表逾時。curl 文件的說明是:「The specified time-out period was reached.」(已達到指定的逾時時間)

適用於:目前的 Homebrew,所有目前的 macOS 版本。檢查日期:2026年10月29日

症狀

  • brew install 因 curl: (28) 而停止,接著顯示時間已到的訊息。
  • Homebrew 表示無法下載某個資源。
  • 在慢速網路、VPN 或公司網路上下載失敗。

可能原因

  • 連線緩慢或會掉封包。在微弱的 Wi-Fi 或熱點上,大型 bottle 會下載逾時。
  • curl 沒有使用代理伺服器。Homebrew 使用 http_proxy、https_proxy 和 all_proxy。
  • 防火牆丟棄流量。網路若丟棄連到下載主機的連線,就會造成逾時。
  • IPv6 路徑故障。下載主機有 IPv6 位址,但 IPv6 無法使用。

如何檢查

  1. 讓 Homebrew 檢查你的系統。

    brew doctor
  2. 用 curl 測試下載主機,僅限 IPv4。

    curl -4 -I https://ghcr.io/v2/
  3. 顯示代理伺服器環境變數。

    env | grep -i proxy
  4. 測量連線。

    networkQuality

如何修正

  1. 讓 Homebrew 多試幾次。預設重試 3 次。

    export HOMEBREW_CURL_RETRIES=5
  2. 如果網路需要代理伺服器,在同一個 shell 中設定。

    export https_proxy=http://proxy.example.com:8080
  3. 如果公司有鏡像站,設定 HOMEBREW_BOTTLE_DOMAIN 和 HOMEBREW_API_DOMAIN。

  4. 可以的話,在較快的網路上再執行一次指令。

使用 Kilobat

  1. 檢查網路是否為計量網路、是否在 VPN 上,或是否很慢。

    kilobat conditions
  2. Kilobat 的連線診斷會逐層測試主機:網路、代理伺服器、DNS、規則、IPv4、IPv6、TLS 和伺服器,並指出失敗的是哪一層。

    kilobat why https://ghcr.io/v2/
  3. 安裝期間讓 Mac 保持喚醒。

    kilobat awake -- brew upgrade
  4. 這些 Kilobat 檢查都是免費的。AI 代理程式可透過 MCP 以 diagnose_connection 和 diagnose_network 執行。請參閱找出某個網站或 API 連不上的原因。

常見問題

curl 錯誤 28 是什麼?

它是 CURLE_OPERATION_TIMEDOUT。curl 的 man 手冊頁將結束代碼 28 列為操作逾時。

資料來源

資料來源檢查日期:2026年10月29日。man 頁面為 macOS 內建版本;在終端機中用 man <name> 開啟。