Risolvere i problemi di sincronizzazione

In questa pagina viene spiegato come risolvere problemi relativi a: il 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.

Utilizzare l'autenticazione per evitare barriere di quota

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ò attivarsi quando diversi utenti sincronizzano nuovi client dallo stesso indirizzo IP, entro un breve periodo di tempo.

Per evitare di attivare le quote, puoi utilizzare l'accesso autenticato, che utilizza un 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.

Configura per l'utilizzo del proxy

Se il codice sorgente viene scaricato da un proxy, come accade in alcuni casi negli ambienti aziendali, assicurati di specificare esplicitamente un proxy che il repository può utilizzare 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à, come bloccarsi durante i download mentre vengono ricevuti oggetti. Per migliorare Per questo problema, regola le impostazioni dello stack TCP/IP o usa e connessioni a Internet. 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 server e sincronizza i client dal mirror senza accedere in ogni rete. Segui queste istruzioni per creare un mirroring locale all'indirizzo ~/aosp-mirror/ e sincronizza i client con il 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 inizializza il mirror utilizzando il flag --mirror con 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, tramite SSH o Git. È anche possibile memorizzarlo su un'unità rimovibile per passare che generano traffico tra utenti o macchine.

Utilizza un clone parziale

Se utilizzi Git versione 2.19 o successiva, specifica --partial-clone quando in esecuzione di 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

In questa pagina vengono descritti alcuni problemi noti che potresti riscontrare durante il tentativo di sincronizzazione Codice sorgente di Android.

I comandi hanno esito negativo con errore 403 o 500 (problemi relativi al 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 per gestire i grandi trasferimenti di dati.

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.