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:
Crie uma senha com o gerador de senha .
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:
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 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, 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.