開発者向け

MacでHomebrewやnpmのダウンロードが失敗する

HomebrewはcurlとGitでダウンロードします。npmはそのレジストリからダウンロードします。それぞれのツールが独自のプロキシと証明書の設定を読み込みます。

対象:最新のHomebrewとnpm、現在のすべてのmacOS。確認日:2026年10月29日

症状

  • brew installが「curl: (28) … timed out」や「Failed to download resource」で止まります。
  • npm installがETIMEDOUT、ECONNRESET、または証明書のエラーで止まります。
  • 会社のネットワークやVPNでだけダウンロードに失敗します。
  • 遅い接続では、ダウンロードが始まってから止まります。

考えられる原因

  • ツールが知らないプロキシ。Homebrewはhttp_proxy、https_proxy、all_proxyを使います。npmは独自のproxyとhttps-proxyの設定か、同じ環境変数を使います。
  • TLSインスペクション。会社のプロキシが独自の証明書で通信に署名しています。会社のプロキシ証明書でMacのターミナルツールが動かないを参照してください。
  • npmのレジストリの誤り。古いregistryの設定が、アクセスできないサーバを指していることがあります。
  • 遅い、または従量制の接続。Wi-Fiが弱い場合やテザリング中は、大きなダウンロードがタイムアウトすることがあります。

確認方法

  1. Homebrewにシステムをチェックさせます。

    brew doctor
  2. Homebrewとシステムの構成を表示します。

    brew config
  3. npmのレジストリとプロキシの設定を表示します。

    npm config get registry
    npm config get proxy
    npm config get https-proxy
  4. npmのレジストリに応答を求めます。

    npm ping
  5. curlでダウンロード先ホストを直接テストします。

    curl -v -o /dev/null https://formulae.brew.sh/api/formula.json

解決方法

  1. プロキシ配下でHomebrewを使う場合は、同じシェルでプロキシ環境変数を設定します。

    export https_proxy=http://proxy.example.com:8080
  2. プロキシ配下でnpmを使う場合は、npmのプロキシを設定します。

    npm config set https-proxy http://proxy.example.com:8080
  3. npmがデフォルトを使うように、古いnpmのレジストリ設定を削除します。

    npm config delete registry
  4. 失敗したダウンロードをHomebrewが再試行する回数を増やします。

    export HOMEBREW_CURL_RETRIES=5
  5. 会社でミラーを使っている場合は、それを設定します。HomebrewはミラーにHOMEBREW_BOTTLE_DOMAINとHOMEBREW_API_DOMAINを使います。

  6. 証明書のエラーの場合は、会社のルート証明書を追加します。会社のプロキシ証明書でMacのターミナルツールが動かないを参照してください。

Kilobatを使う場合

  1. 大きなインストールの前に、ネットワークが従量制か、VPN経由か、遅いかを確認します。

    kilobat conditions
  2. ダウンロード先ホストへの接続を止めている層を探します。そのプロセスのプロキシ環境変数を使うには--appを付けます。

    kilobat why https://ghcr.io/v2/homebrew/core --app process:curl
  3. インストール中はMacをスリープさせないようにします。

    kilobat awake -- brew upgrade
  4. これらのコマンドは無料です。エージェントで大きなダウンロードの前にネットワークを確認するを参照してください。

よくある質問

Homebrewは「システム設定」のプロキシを使いますか?

Homebrewのドキュメントには、curl、Git、Subversion用のプロキシ環境変数が記載されています。シェルでhttps_proxyを設定してください。

npmはどれくらい待ちますか?

npmのドキュメントによると、fetch-timeoutのデフォルトは300000 ms(5分)、fetch-retriesは2回です。

出典

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