Solucionar e corrigir problemas de sincronização

Esta página explica como solucionar e corrigir problemas relacionados ao comando repo sync .

Corrigir problemas de rede

Esta seção fornece diversas sugestões para corrigir problemas de rede que podem causar sincronizações malsucedidas.

Use autenticação para evitar barreiras de cotas

Para proteger os servidores contra uso excessivo, cada endereço IP utilizado para acessar a origem está associado a uma cota.

Ao compartilhar um endereço IP com outros usuários, como ao acessar os repositórios de origem além de um firewall NAT, as cotas podem ser acionadas para padrões normais. Por exemplo, uma cota pode ser acionada quando vários usuários sincronizam novos clientes do mesmo endereço IP, em um curto período.

Para evitar o acionamento de cotas, você pode utilizar o acesso autenticado, que utiliza uma cota separada para cada usuário, independente do endereço IP.

Para ativar o acesso autenticado:

  1. Crie uma senha com o gerador de senha .

  2. Execute o seguinte comando para converter seu cliente para usar autenticação automática (sem alterar a ramificação):

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

    Observe que o prefixo do diretório /a/ aciona a autenticação automática.

Configurar para uso de proxy

Se você estiver baixando a fonte por trás de um proxy, como é comum em alguns ambientes corporativos, certifique-se de especificar explicitamente um proxy para o Repo usar executando estes comandos:

$ 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

Ajuste as configurações de TCP/IP para evitar problemas de conectividade

Embora seja raro, os clientes Linux podem enfrentar problemas de conectividade, como ficar preso no meio de downloads ao receber objetos. Para resolver esse problema, ajuste as configurações da pilha TCP/IP ou use conexões não paralelas. Você deve ter acesso root para modificar a configuração TCP. Para modificar a configuração, emita os seguintes comandos:

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

Use um espelho local para evitar latência de rede

Ao usar vários clientes, você pode criar um espelho local de todo o conteúdo do servidor e sincronizar os clientes desse espelho sem acessar a rede. Siga estas instruções para criar um espelho local em ~/aosp-mirror/ e sincronizar clientes com esse espelho:

  1. Crie e sincronize o espelho:

    $ mkdir -p /usr/local/aosp/mirror
    $ cd /usr/local/aosp/mirror
    $ repo init -u https://android.googlesource.com/mirror/manifest --mirror
    

    Esses comandos criam um espelho local em /user/local/aosp/mirror e inicializam o espelho usando o sinalizador --mirror com o comando repo init .

  2. Para sincronizar clientes do espelho:

    $ mkdir -p /usr/local/aosp/main
    $ cd /usr/local/aosp/main
    $ repo init -u /usr/local/aosp/mirror/platform/manifest.git
    $ repo sync
    
  3. Por fim, siga estes comandos para sincronizar o espelho com o servidor e sincronizar o cliente com o espelho:

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

É possível armazenar o espelho em um servidor LAN e acessá-lo via NFS, SSH ou Git. Também é possível armazená-lo em uma unidade removível e passá-la entre usuários ou máquinas.

Use um clone parcial

Se você estiver usando o Git versão 2.19 ou posterior, especifique --partial-clone ao executar repo init para superar quaisquer problemas de rede de baixa latência:

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

Em vez de inicializar o Repo para baixar tudo, este comando baixa os objetos Git conforme eles são necessários.

Corrigir problemas específicos de sincronização

Esta página detalha alguns problemas conhecidos que você pode encontrar ao tentar sincronizar o código-fonte do Android.

Os comandos falham com erro 403 ou 500 (problemas de proxy)

Os comandos repo init ou repo sync podem falhar com um erro 403 ou 500. Na maioria das vezes, esses erros estão relacionados a proxies HTTP que lutam para lidar com grandes transferências de dados.

Embora não haja uma correção específica para esses erros, usar a versão mais recente do Python e usar explicitamente repo sync -j1 às vezes pode ajudar.