Cette page explique comment résoudre les problèmes liés à la commande repo sync
.
Résoudre les problèmes de réseau
Cette section fournit plusieurs suggestions pour résoudre les problèmes de réseau pouvant entraîner des échecs de synchronisation.
Utiliser l'authentification pour éviter les barrières de quota
Pour protéger les serveurs contre une utilisation excessive, chaque adresse IP utilisée pour accéder à la source est associée à un quota.
Lorsque vous partagez une adresse IP avec d'autres utilisateurs, par exemple lorsque vous accédez aux dépôts sources en dehors d'un pare-feu NAT, des quotas peuvent se déclencher pour des modèles normaux. Par exemple, un quota peut se déclencher lorsque plusieurs utilisateurs synchronisent de nouveaux clients à partir de la même adresse IP, sur une courte période.
Pour éviter de déclencher des quotas, vous pouvez utiliser l'accès authentifié, qui utilise un quota distinct pour chaque utilisateur, quelle que soit l'adresse IP.
Pour activer l'accès authentifié:
Créez un mot de passe à l'aide du générateur de mots de passe.
Exécutez la commande suivante pour convertir votre client afin qu'il utilise l'authentification automatique (sans modifier la branche):
$ repo init -u https://android.googlesource.com/a/platform/manifest
Notez que le préfixe de répertoire
/a/
déclenche l'authentification automatique.
Configurer pour l'utilisation d'un proxy
Si vous téléchargez le code source derrière un proxy, comme cela est courant dans certains environnements d'entreprise, veillez à spécifier explicitement un proxy que Repo doit utiliser en exécutant les commandes suivantes:
$ export HTTP_PROXY=http://proxy_user_id:proxy_password@proxy_server:proxy_port
$ export HTTPS_PROXY=http://proxy_user_id:proxy_password@proxy_server:proxy_port
Ajuster les paramètres TCP/IP pour éviter les problèmes de connectivité
Bien que cela soit rare, les clients Linux peuvent rencontrer des problèmes de connectivité, par exemple lorsqu'ils se bloquent au milieu des téléchargements pendant la réception d'objets. Pour améliorer ce problème, ajustez les paramètres de la pile TCP/IP ou utilisez des connexions non parallèles. Vous devez disposer d'un accès racine pour modifier le paramètre TCP. Pour modifier le paramètre, exécutez les commandes suivantes:
$ sudo sysctl -w net.ipv4.tcp_window_scaling=0
$ repo sync -j1
Utiliser un miroir local pour éviter la latence réseau
Lorsque vous utilisez plusieurs clients, vous pouvez créer un miroir local de l'intégralité du contenu du serveur et synchroniser les clients à partir de ce miroir sans accéder au réseau. Suivez ces instructions pour créer un miroir local dans ~/aosp-mirror/
et synchroniser les clients avec ce miroir:
Créez et synchronisez le miroir:
$ mkdir -p /usr/local/aosp/mirror $ cd /usr/local/aosp/mirror $ repo init -u https://android.googlesource.com/mirror/manifest --mirror
Ces commandes créent un miroir local dans
/user/local/aosp/mirror
et l'initialisent à l'aide de l'indicateur--mirror
avec la commanderepo init
.Pour synchroniser les clients à partir de la duplication:
$ mkdir -p /usr/local/aosp/main $ cd /usr/local/aosp/main $ repo init -u /usr/local/aosp/mirror/platform/manifest.git $ repo sync
Enfin, suivez ces commandes pour synchroniser le miroir avec le serveur et le client avec le miroir:
$ cd /usr/local/aosp/mirror</code> $ repo sync $ cd /usr/local/aosp/main $ repo sync
Vous pouvez stocker le miroir sur un serveur LAN et y accéder via NFS, SSH ou Git. Il est également possible de le stocker sur un disque amovible et de le transmettre entre utilisateurs ou machines.
Utiliser un clone partiel
Si vous utilisez la version 2.19 ou ultérieure de Git, spécifiez --partial-clone
lorsque vous effectuez repo init
pour résoudre les problèmes de réseau à faible latence:
$ repo init -u https://android.googlesource.com/platform/manifest -b main --partial-clone --clone-filter=blob:limit=10M
Au lieu d'initialiser Repo pour tout télécharger, cette commande télécharge les objets Git selon leurs besoins.
Résoudre des problèmes de synchronisation spécifiques
Cette page décrit certains problèmes connus que vous pouvez rencontrer lorsque vous essayez de synchroniser le code source Android.
Les commandes échouent et renvoient une erreur 403 ou 500 (problèmes de proxy)
Les commandes repo init
ou repo sync
peuvent échouer avec une erreur 403 ou 500. Le plus souvent, ces erreurs sont liées à des proxys HTTP qui ont du mal à gérer les transferts de données volumineux.
Bien qu'il n'existe pas de correctif spécifique pour ces erreurs, utiliser la dernière version de Python et utiliser explicitement repo sync -j1
peut parfois aider.