Risolvi e risolvi i problemi di sincronizzazione

Questa pagina spiega come risolvere e risolvere i problemi relativi al comando repo sync .

Risolvi 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 barriere legate alle quote

Per proteggere i server da un uso eccessivo, ogni indirizzo IP utilizzato per accedere all'origine è associato a una quota.

Quando si condivide un indirizzo IP con altri utenti, ad esempio quando si accede ai repository di origine da oltre un firewall NAT, le quote possono attivarsi secondo schemi normali. Ad esempio, una quota può attivarsi quando più utenti sincronizzano nuovi client dallo stesso indirizzo IP, in un breve periodo.

Per evitare l'attivazione delle quote, è possibile utilizzare l'accesso autenticato, che utilizza una quota separata per ciascun utente, indipendentemente dall'indirizzo IP.

Per abilitare l'accesso autenticato:

  1. Crea una password con il generatore di password .

  2. Esegui il comando seguente per convertire il tuo client per utilizzare 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'uso proxy

Se stai scaricando 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

Regola le impostazioni TCP/IP per evitare problemi di connettività

Sebbene sia raro, i client Linux possono riscontrare problemi di connettività, ad esempio rimanere bloccati nel mezzo dei download durante la ricezione di oggetti. Per risolvere questo problema, modificare le impostazioni dello stack TCP/IP o utilizzare connessioni non parallele. È necessario disporre dell'accesso root per modificare l'impostazione TCP. Per modificare l'impostazione, eseguire i seguenti comandi:

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

Utilizza un mirror locale per evitare latenza di rete

Quando si utilizzano più client, è possibile creare un mirror locale dell'intero contenuto del server e sincronizzare i client da quel mirror senza accedere alla rete. Segui queste istruzioni per creare un mirror locale in ~/aosp-mirror/ e sincronizzare i client con quel mirror:

  1. Crea e sincronizza il mirror:

    $ 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 inizializzano il mirror utilizzando il flag --mirror con il comando repo init .

  2. Per sincronizzare 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
    $ 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 e passare tale unità tra utenti o macchine.

Utilizza un clone parziale

Se utilizzi Git versione 2.19 o successiva, 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

Invece di inizializzare Repo per scaricare tutto, questo comando scarica gli oggetti Git quando sono necessari.

Risolvi problemi di sincronizzazione specifici

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

I comandi falliscono con errore 403 o 500 (problemi proxy)

I comandi repo init o repo sync potrebbero non riuscire con un errore 403 o 500. Molto spesso questi errori sono legati ai proxy HTTP che faticano a gestire grandi trasferimenti di dati.

Sebbene non esista una correzione specifica per questi errori, l'uso della versione Python più recente e l'uso esplicito repo sync -j1 a volte può essere d'aiuto.