Esta página explica como resolver problemas e corrigir erros relacionados
ao comando repo sync
.
Corrigir problemas de rede
Esta seção fornece várias sugestões para a correção de problemas de rede que podem provocar erros na sincronização.
Usar a autenticação para evitar barreiras de cota
Para proteger os servidores contra o uso excessivo, cada endereço IP usado para acessar a origem é associado a uma cota.
Ao compartilhar um endereço IP com outros usuários, como ao acessar os repositórios de origem por um firewall NAT, as cotas podem ser acionadas para padrões normais de uso. Por exemplo, se muitos usuários sincronizarem novos clientes do mesmo endereço IP em um curto período.
Para evitar o acionamento de cotas, é possível usar o acesso autenticado, que utiliza uma cota separada para cada usuário, independente do endereço IP.
Para ativar o acesso autenticado:
Crie uma senha com o gerador de senhas.
Execute o comando abaixo para que seu cliente use a autenticação automática (sem mudar a ramificação):
$ repo init -u https://android.googlesource.com/a/platform/manifest
O prefixo do diretório
/a/
aciona a autenticação automática.
Configurar para uso do proxy
Se você estiver fazendo o download da origem com a proteção de um proxy (como é normal em alguns ambientes corporativos) especifique 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
Ajustar configurações TCP/IP para evitar problemas de conectividade
Embora seja raro, clientes do Linux podem ter problemas de conectividade, como travamentos durante downloads ao receber objetos. Para evitar esse problema, ajuste as configurações da pilha TCP/IP ou use conexões não paralelas. É necessário ter acesso root para modificar a configuração do TCP: Para modificar a configuração, use estes comandos:
$ sudo sysctl -w net.ipv4.tcp_window_scaling=0
$ repo sync -j1
Usar um espelho local para evitar latência de rede
Ao usar vários clientes, é possível criar um espelho local de todo o conteúdo do servidor
e sincronizar os clientes desse espelho sem acessar a
rede. Siga as instruções abaixo para criar um espelho local em
~/aosp-mirror/
e sincronizar os clientes com ele:
Criar e sincronizar 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 a flag--mirror
com o comandorepo init
.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
Por fim, para sincronizar o espelho com o servidor e o cliente com o espelho, siga estes comandos:
$ 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 transmitir essa unidade para os usuários ou as máquinas.
Usar um clone parcial
Se você estiver usando a versão 2.19 ou mais recente do Git, especifique --partial-clone
ao
executar repo init
para evitar 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 fazer todos os downloads, este comando faz o download de objetos Git conforme necessário.
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 os erros 403 ou 500 (problemas de proxy)
Os comandos repo init
ou repo sync
podem falhar com os erros 403 ou
500. Com frequência, esses erros estão relacionados a proxies HTTP que têm dificuldade para
processar grandes transferências de dados.
Embora não haja uma solução específica para esses erros, usar a versão mais recente
do Python e usar repo sync -j1
explicitamente pode ajudar.