エラーメッセージ
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 doctorcurlでダウンロード先ホストをIPv4のみでテストします。
curl -4 -I https://ghcr.io/v2/プロキシ環境変数を表示します。
env | grep -i proxy接続を測定します。
networkQuality
解決方法
Homebrewの再試行回数を増やします。デフォルトは3回です。
export HOMEBREW_CURL_RETRIES=5ネットワークでプロキシが必要な場合は、同じシェルで設定します。
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 upgradeこれらのKilobatのチェックは無料です。AIエージェントはMCPを通じて
diagnose_connectionとdiagnose_networkで実行します。1つのサイトや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>を実行すると開けます。