エラーメッセージ

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. ネットワークでプロキシが必要な場合は、同じシェルで設定します。

    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で実行します。1つのサイトやAPIに接続できない原因を見つけるを参照してください。

よくある質問

curlのエラー28とは何ですか?

CURLE_OPERATION_TIMEDOUTのことです。curlのmanページでは、終了コード28は操作のタイムアウトとされています。

出典

出典は2026年10月29日に確認しました。manページはmacOSに付属のものです。「ターミナル」でman <name>を実行すると開けます。