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 des échecs de synchronisation.
Utiliser l'authentification pour éviter les obstacles au quota
Afin de protéger les serveurs contre une utilisation excessive, chaque adresse IP utilisée pour source d'accès est associée à un quota.
Lorsque vous partagez une adresse IP avec d'autres utilisateurs, par exemple pour accéder à la source. au-delà d'un pare-feu NAT, les quotas peuvent se déclencher modèles de ML. Par exemple, un quota peut se déclencher lorsque plusieurs utilisateurs synchronisent de nouveaux clients à partir de la même adresse IP, dans un court laps de temps.
Pour éviter de déclencher des quotas, vous pouvez utiliser l'accès authentifié, qui utilise un 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 en mode automatique authentification (sans changer de 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 du proxy
Si vous téléchargez la source derrière un proxy, comme c'est souvent le cas 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é, tels que bloqué au milieu des téléchargements et recevant des objets. Pour améliorer pour résoudre ce problème, ajustez les paramètres de la pile TCP/IP ou utilisez des connexions externes. Vous devez disposer d'un accès root pour modifier le paramètre TCP. Pour modifier les , 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 du réseau
Lorsque vous utilisez plusieurs clients, vous pouvez créer un miroir local de l'ensemble du serveur
du contenu et des clients de synchronisation à partir de ce miroir,
réseau. Suivez ces instructions pour créer une mise en miroir locale sur
~/aosp-mirror/
et synchronisez 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 initialiser le miroir à l'aide de l'indicateur--mirror
avecrepo init
.Pour synchroniser des clients à partir du miroir:
$ mkdir -p /usr/local/aosp/main $ cd /usr/local/aosp/main $ repo init -u /usr/local/aosp/mirror/platform/manifest.git $ repo sync
Enfin, exécutez les commandes suivantes 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
Il est possible de stocker le miroir sur un serveur LAN et d'y accéder via NFS, SSH ou Git. Il est également possible de le stocker sur un lecteur amovible et de transmettre qui se déplacent entre les utilisateurs ou les machines.
Utiliser un clone partiel
Si vous utilisez Git 2.19 ou une version ultérieure, spécifiez --partial-clone
lorsque
en exécutant 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 Git objets en fonction de leurs besoins.
Résoudre des problèmes de synchronisation spécifiques
Cette page détaille certains problèmes connus que vous pouvez rencontrer lors de la tentative de synchronisation du Code source Android.
Échec des commandes avec une erreur 403 ou 500 (problèmes de proxy)
Les commandes repo init
ou repo sync
peuvent échouer et renvoyer un code d'erreur 403 ou 500
. Le plus souvent, ces erreurs sont liées
à des proxys HTTP qui ont du mal à
pour traiter les transferts de données volumineux.
Bien qu'il n'existe pas de correction spécifique à ces erreurs, les versions les plus récentes de Python
et l'utilisation explicite de repo sync -j1
peut parfois aider.