Solucionar y solucionar problemas de sincronización

Esta página explica cómo solucionar problemas relacionados con el comando repo sync .

Solucionar problemas de red

Esta sección proporciona varias sugerencias para solucionar problemas de red que pueden provocar sincronizaciones fallidas.

Utilice la autenticación para evitar barreras de cuotas

Para proteger los servidores contra el uso excesivo, cada dirección IP que se utiliza para acceder a la fuente está asociada a una cuota.

Al compartir una dirección IP con otros usuarios, como cuando se accede a los repositorios de origen desde más allá de un firewall NAT, las cuotas pueden desencadenar patrones normales. Por ejemplo, una cuota puede activarse cuando varios usuarios sincronizan nuevos clientes desde la misma dirección IP, en un período corto.

Para evitar activar cuotas, puede utilizar el acceso autenticado, que utiliza una cuota separada para cada usuario, independientemente de la dirección IP.

Para habilitar el acceso autenticado:

  1. Crea una contraseña con el generador de contraseñas .

  2. Ejecute el siguiente comando para convertir su cliente para que utilice la autenticación automática (sin cambiar de rama):

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

    Tenga en cuenta que el prefijo del directorio /a/ activa la autenticación automática.

Configurar para uso de proxy

Si está descargando el código fuente detrás de un proxy, como es común en algunos entornos corporativos, asegúrese de especificar explícitamente un proxy para que lo use Repo ejecutando estos 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 la configuración de TCP/IP para evitar problemas de conectividad

Si bien es raro, los clientes de Linux pueden experimentar problemas de conectividad, como quedarse atascados en medio de descargas mientras reciben objetos. Para mejorar este problema, ajuste la configuración de la pila TCP/IP o utilice conexiones no paralelas. Debe tener acceso de root para modificar la configuración de TCP. Para modificar la configuración, emita los siguientes comandos:

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

Utilice un espejo local para evitar la latencia de la red

Cuando utiliza varios clientes, puede crear un espejo local de todo el contenido del servidor y sincronizar clientes desde ese espejo sin acceder a la red. Siga estas instrucciones para crear un espejo local en ~/aosp-mirror/ y sincronizar clientes con ese espejo:

  1. Crea y sincroniza el espejo:

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

    Estos comandos crean un espejo local en /user/local/aosp/mirror e inicializan el espejo usando el indicador --mirror con el comando repo init .

  2. Para sincronizar clientes desde el espejo:

    $ mkdir -p /usr/local/aosp/main
    $ cd /usr/local/aosp/main
    $ repo init -u /usr/local/aosp/mirror/platform/manifest.git
    $ repo sync
    
  3. Finalmente, siga estos comandos para sincronizar el espejo con el servidor y sincronizar el cliente con el espejo:

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

Es posible almacenar el espejo en un servidor LAN y acceder a él a través de NFS, SSH o Git. También es posible almacenarlo en una unidad extraíble y pasar esa unidad entre usuarios o máquinas.

Utilice un clon parcial

Si está utilizando Git versión 2.19 o posterior, especifique --partial-clone al realizar repo init para superar cualquier problema de red de baja latencia:

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

En lugar de inicializar Repo para descargar todo, este comando descarga objetos Git a medida que son necesarios.

Solucionar problemas de sincronización específicos

Esta página detalla algunos problemas conocidos que puede encontrar al intentar sincronizar el código fuente de Android.

Los comandos fallan con el error 403 o 500 (problemas de proxy)

Los comandos repo init o repo sync pueden fallar con un error 403 o 500. La mayoría de las veces, estos errores están relacionados con servidores proxy HTTP que tienen dificultades para manejar grandes transferencias de datos.

Si bien no existe una solución específica para estos errores, usar la versión más reciente de Python y usar explícitamente repo sync -j1 a veces puede ayudar.