Risolvere i problemi di sincronizzazione

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.

Utilizza l'autenticazione per evitare le barriere delle quote

Per proteggere i server dall'uso eccessivo, ogni indirizzo IP utilizzato l'origine di accesso è associata a una quota.

Quando condividi un indirizzo IP con altri utenti, ad esempio quando accedi all'origine da un firewall NAT, le quote possono attivare pattern. Ad esempio, una quota può essere attivata quando più utenti sincronizzano nuovi client 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 distinta per ogni utente, indipendentemente dall'indirizzo IP.

Per abilitare l'accesso autenticato:

  1. Crea una password con il generatore di password.

  2. Esegui questo comando per convertire il client in modo che utilizzi le autenticazione (senza modificare ramo):

    $ repo init -u https://android.googlesource.com/a/platform/manifest
    

    Tieni presente che il prefisso della directory /a/ attiva l'autenticazione automatica.

Configurazione per l'utilizzo del proxy

Se scarichi il codice sorgente 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à

Per quanto sia raro, i client Linux possono riscontrare problemi di connettività, come bloccarsi durante i download mentre vengono ricevuti oggetti. Per risolvere 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 invia i seguenti comandi:

$ sudo sysctl -w net.ipv4.tcp_window_scaling=0
$ repo sync -j1

Usa un mirroring locale per evitare la latenza di rete

Quando utilizzi più client, puoi creare un mirror locale dell'intero contenuto del server e sincronizzare i client da questo mirror senza accedere alla rete. Segui queste istruzioni per creare un mirror locale in at~/aosp-mirror/ e sincronizzare i client con questo mirror:

  1. 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 comando repo init.

  2. Per sincronizzare i client dal mirroring:

    $ mkdir -p /usr/local/aosp/main
    $ cd /usr/local/aosp/main
    $ repo init -u /usr/local/aosp/mirror/platform/manifest.git
    $ repo sync
    
  3. Infine, segui questi comandi per sincronizzare il mirror con il server e sincronizzare il client con il mirror:

    $ cd /usr/local/aosp/mirror</code>
    $ repo sync
    $ cd /usr/local/aosp/main
    $ repo sync
    

È possibile archiviare il mirror su un server LAN e accedervi tramite NFS, SSH o Git. È anche possibile memorizzarlo su un'unità rimovibile per passare che generano traffico tra utenti o macchine.

Utilizzare un clone parziale

Se utilizzi Git 2.19 o versioni successive, specifica --partial-clone quando esegui repo init per superare eventuali problemi di rete a bassa latenza:

  $ repo init -u https://android.googlesource.com/platform/manifest -b main --partial-clone --clone-filter=blob:limit=10M

Anziché inizializzare il repository per scaricare tutto, questo comando scarica Git gli oggetti necessari.

Risolvere problemi di sincronizzazione specifici

Questa pagina descrive alcuni problemi noti che potresti riscontrare durante il tentativo di sincronizzare il codice sorgente di Android.

I comandi non vanno a buon fine e generano un errore 403 o 500 (problemi di proxy)

I comandi repo init o repo sync potrebbero non riuscire con un errore 403 o 500. Molto spesso questi errori sono correlati a proxy HTTP che hanno difficoltà a gestire i trasferimenti di dati di grandi dimensioni.

Anche se non esiste una correzione specifica a questi errori, utilizzando il file Python più recente e l'utilizzo esplicito di repo sync -j1 a volte può essere d'aiuto.