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
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 pour accéder à la source. au-delà d'un pare-feu NAT, les quotas peuvent se déclencher des 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 le code 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 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 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 la copie :
$ 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 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, 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 les objets Git au fur et à mesure.
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 ne parviennent pas à gérer 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.