Les développeurs et équipes CI qui tirent souvent du code et des dépendances sur un Mac distant se heurtent à des timeouts et coupures sur Git, Homebrew et npm. Cet article répond en FAQ avec des paramètres exécutables (Git : http.postBuffer, timeout, ControlPersist ; Homebrew et npm : retry et timeout), un tableau comparatif miroir / proxy / site miroir, et une checklist pour stabiliser le pull transfrontière. Public visé : devs fréquents, CI et équipes internationales.

Pourquoi Git, Homebrew et npm sur Mac distant sont souvent en timeout ou coupés

Sur un Mac distant, le trafic passe par Internet : latence élevée, pertes de paquets et pare-feu transfrontaliers rendent les transferts longs et fragiles. Git utilise par défaut des timeouts HTTP ou SSH courts ; un gros git clone ou git pull peut abandonner après quelques minutes sans activité détectée. Homebrew et npm téléchargent de gros volumes (formules, node_modules) ; une micro-coupure ou un serveur source lent déclenche un échec sans retry automatique suffisant. En CI, ces échecs aléatoires rallongent les builds et compliquent la reproductibilité. Trois causes principales : (1) timeouts par défaut trop courts pour des liens longue distance, (2) absence ou insuffisance de retry côté client, (3) dépendance à des sources éloignées (GitHub, registry npm, formules Homebrew) sans miroir ni proxy.

Git : paramètres de timeout et retry (http.postBuffer, timeout, ControlPersist)

Paramètres exécutables à appliquer globalement ou par dépôt (sans modifier le serveur).

  • http.postBuffer : augmente la taille du buffer HTTP (ex. 500 Mo pour gros clones) : git config --global http.postBuffer 524288000.
  • http.lowSpeedLimit et http.lowSpeedTime : évitent l’abandon trop tôt sur lien lent : git config --global http.lowSpeedLimit 1000, git config --global http.lowSpeedTime 60 (1000 octets/s pendant 60 s).
  • timeout : délai maximum (secondes) : git config --global http.version HTTP/1.1 si besoin, et git config --global http.timeout 600 (10 min).
  • SSH : ControlPersist et ControlMaster : réutiliser une même connexion SSH pour plusieurs commandes, limitant les reconnexions qui timeout. Dans ~/.ssh/config : Host github.com, ControlMaster auto, ControlPath ~/.ssh/sockets/%r@%h-%p, ControlPersist 600.

Pour un retry explicite en script ou CI : boucle avec git clone ou git pull et un nombre maximal de tentatives (ex. 3) avec délai entre chaque.

Homebrew et npm : configurer retry et timeout

Homebrew : pas de paramètre global de retry ; utiliser un miroir (ex. HOMEBREW_CORE_GIT_REMOTE, HOMEBREW_BOTTLES_DOMAIN) pour rapprocher les sources, et envelopper brew update / brew install dans un script qui réessaie (ex. 3 fois avec sleep 10). Réseau : export HOMEBREW_CURL_RETRIES=3 si supporté par la version.

npm : npm config set fetch-retries 5, npm config set fetch-retry-mintimeout 20000, npm config set fetch-retry-maxtimeout 120000. En CI, utiliser un npm ci ou npm install dans une boucle de retry (ou un outil comme npx npm-remote-ls pour vérifier la disponibilité). Pour un registry miroir : npm config set registry <url-miroir>.

Checklist rapide
  • Git : postBuffer, lowSpeedLimit/lowSpeedTime, timeout, SSH ControlPersist.
  • Homebrew : miroir + script retry autour de brew.
  • npm : fetch-retries, fetch-retry-mintimeout/maxtimeout, registry miroir si besoin.

Miroir auto-hébergé, proxy ou site miroir : tableau comparatif

Trois familles de solutions pour stabiliser et accélérer le pull (Git, npm, Homebrew) sur Mac distant. Choix selon coût, maintenance et contrôle.

Solution Vitesse / stabilité Coût / maintenance Typique
Site miroir publicBonne si procheGratuit, aucune maintenanceRegistry npm miroir, miroir Git (ex. Gitea public)
Proxy HTTP/SOCKSDépend du proxyCoût proxy ; config uniqueCI derrière proxy d’entreprise ; tout le trafic
Miroir auto-hébergéContrôle totalCoût serveur + synchroÉquipes nombreuses, conformité, réduction de la dépendance externe

Recommandation pragmatique : commencer par un site miroir ou un proxy déjà disponible (ex. registry npm proche, proxy d’équipe) ; passer à un miroir auto-hébergé si les besoins de stabilité ou de conformité le justifient. En équipe transfrontière, privilégier un nœud Mac distant proche des miroirs ou du proxy pour limiter les timeouts. Voir aussi l’article « Accélération git clone et pull transfrontière : miroir, proxy, auto-hébergement » pour les étapes de configuration.

Synthèse et recommandations

Les timeouts et coupures sur Mac distant avec Git, Homebrew et npm viennent surtout de timeouts par défaut courts, du manque de retry et de la distance aux sources. Appliquer les paramètres Git (http.postBuffer, timeout, lowSpeedLimit/lowSpeedTime, SSH ControlPersist), configurer les retries npm et envelopper Homebrew dans un script de retry ; compléter avec un miroir ou un proxy selon le tableau comparatif. Pour une base de travail stable, un Mac distant dédié (Mac Mini M4) avec une connexion et des paramètres bien réglés réduit les échecs aléatoires en CI et au quotidien. Consultez l’accueil, les tarifs, la page achat ou le blog MacPull pour choisir et réserver votre nœud Mac distant.

Stabilité pull & CI

Mac distant pour Git, Homebrew et npm stables

Réduisez les timeouts et les coupures : nœud Mac dédié, paramètres et miroirs recommandés. Consultez les tarifs ou réservez sans connexion préalable.

Voir les tarifs Acheter Accueil Blog
Livraison rapide
Annulation à tout moment
Support 24/7