Questa pagina spiega come risolvere i problemi relativi al comando repo sync
.
Risolvere i problemi di rete
Questa sezione fornisce diversi suggerimenti per risolvere i problemi di rete che possono causare sincronizzazioni non riuscite.
Utilizzare l'autenticazione per evitare le barriere delle quote
Per proteggere i server da un utilizzo eccessivo, a ogni indirizzo IP utilizzato per accedere all'origine è associata una quota.
Quando condividi un indirizzo IP con altri utenti, ad esempio quando accedi ai repository di origine da un firewall NAT, le quote possono attivarsi per pattern normali. Ad esempio, una quota può essere attivata quando più utenti sincronizzano nuovi clienti dallo stesso indirizzo IP in un breve periodo di tempo.
Per evitare di attivare le quote, puoi utilizzare l'accesso autenticato, che utilizza una quota separata per ogni utente, indipendentemente dall'indirizzo IP.
Per attivare l'accesso autenticato:
Crea una password con il generatore di password.
Esegui questo comando per convertire il client in modo che utilizzi l'autenticazione automatica (senza cambiare ramo):
$ repo init -u https://android.googlesource.com/a/platform/manifest
Tieni presente che il prefisso della directory
/a/
attiva l'autenticazione automatica.
Configurare per l'utilizzo del proxy
Se scarichi l'origine da dietro un proxy, come è comune in alcuni ambienti aziendali, assicurati di specificare esplicitamente un proxy da utilizzare per Repo eseguendo questi comandi:
$ 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
Modificare le impostazioni TCP/IP per evitare problemi di connettività
Anche se rari, i client Linux possono riscontrare problemi di connettività, ad esempio bloccarsi a metà dei download durante la ricezione degli oggetti. Per migliorare questo problema, modifica le impostazioni dello stack TCP/IP o utilizza connessioni non parallele. Per modificare l'impostazione TCP, devi disporre dell'accesso root. Per modificare l'impostazione, esegui i seguenti comandi:
$ sudo sysctl -w net.ipv4.tcp_window_scaling=0
$ repo sync -j1
Utilizza un mirror locale per evitare la latenza di rete
Quando utilizzi più client, puoi creare un mirror locale dell'intero server
e sincronizzare i client da questo mirror senza accedere alla
rete. Segui queste istruzioni per creare un mirror locale in
~/aosp-mirror/
e sincronizzare i client con questo mirror:
Crea e sincronizza il mirroring:
$ mkdir -p /usr/local/aosp/mirror $ cd /usr/local/aosp/mirror $ repo init -u https://android.googlesource.com/mirror/manifest --mirror
Questi comandi creano un mirror locale in
/user/local/aosp/mirror
e lo inizializzano utilizzando il flag--mirror
con il comandorepo init
.Sincronizza i client dal mirror:
$ mkdir -p /usr/local/aosp/main $ cd /usr/local/aosp/main $ repo init -u /usr/local/aosp/mirror/platform/manifest.git -b android-latest-release $ repo sync
Sincronizza il mirror con il server e i client con il mirror:
$ cd /usr/local/aosp/mirror</code> $ repo sync $ cd /usr/local/aosp/android-latest-release $ repo sync
È possibile archiviare il mirror su un server LAN e accedervi tramite NFS, SSH o Git. È anche possibile memorizzarlo su un'unità rimovibile e trasferire l'unità tra utenti o macchine.
Utilizzare una clonazione parziale
Se utilizzi Git versione 2.19 o successive, specifica --partial-clone
quando
esegui repo init
per risolvere eventuali problemi di rete a bassa latenza:
$ repo init -u https://android.googlesource.com/platform/manifest -b android-latest-release --partial-clone --clone-filter=blob:limit=10M
Anziché inizializzare Repo per scaricare tutto, questo comando scarica gli oggetti Git in base alle necessità.
Risolvere gli errori 403 o 500 (problemi di proxy)
I comandi repo init
o repo sync
potrebbero non riuscire e restituire un errore 403 o 500. Molto spesso questi errori sono correlati a proxy HTTP che faticano a
gestire i trasferimenti di grandi quantità di dati.
Sebbene non esista una correzione specifica per questi errori, l'utilizzo della versione più recente di Python e l'utilizzo esplicito di repo sync -j1
a volte possono essere utili.