Rozwiązywanie problemów z synchronizacją

Na tej stronie dowiesz się, jak rozwiązywać problemy związane z polecenie repo sync.

Rozwiąż problemy z siecią

W tej sekcji znajdziesz kilka sugestii na temat rozwiązywania problemów z siecią, które mogą może spowodować niepowodzenie synchronizacji.

Używaj uwierzytelniania, aby uniknąć barier limitów

W celu ochrony serwerów przed nadmiernym wykorzystaniem każdy adres IP używany do źródło dostępu jest powiązane z limitem.

Podczas udostępniania adresu IP innym użytkownikom, na przykład podczas uzyskiwania dostępu do źródła spoza zapory sieciowej NAT, limity mogą być aktywowane w normalnym trybie wzorów. Na przykład limit może zostać aktywowany, gdy kilku użytkowników zsynchronizuje nowe klienty z tego samego adresu IP w krótkim okresie.

Aby uniknąć aktywowania limitów, możesz użyć uwierzytelnionego dostępu, w którym oddzielny limit dla każdego użytkownika, niezależnie od adresu IP.

Aby włączyć uwierzytelniony dostęp:

  1. Utwórz hasło za pomocą generatora haseł.

  2. Uruchom poniższe polecenie, aby przekonwertować klienta na opcję automatycznego uwierzytelnianie (bez zmiany gałęzi):

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

    Pamiętaj, że prefiks katalogu /a/ aktywuje automatyczne uwierzytelnianie.

Konfigurowanie do użycia z serwerem proxy

Jeśli pobierasz źródło za pośrednictwem serwera proxy, co jest typowe w niektórych środowisk firmowych, musisz wyraźnie określić serwer proxy, którego będzie używać Repo uruchamianie tych poleceń:

$ 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

Dostosuj ustawienia TCP/IP, aby uniknąć problemów z połączeniem

W rzadkich przypadkach w przypadku klientów z systemem Linux mogą występować problemy z połączeniem, takie jak: utknięcie w trakcie pobierania podczas odbierania obiektów. Poprawa wyników ten problem, dostosuj ustawienia stosu TCP/IP lub użyj połączeń nierównoległych połączeń. Aby zmienić ustawienie TCP, musisz mieć dostęp na poziomie roota. Aby zmienić , uruchom następujące polecenia:

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

Aby uniknąć opóźnień w sieci, użyj lustrzanego lokalnego

W przypadku używania kilku klientów możesz utworzyć lokalne dublowanie całego serwera klientów synchronizacji i synchronizacji z serwera lustrzanego bez dostępu do Postępuj zgodnie z tymi instrukcjami, aby utworzyć lokalne odbicie lustrzane w ~/aosp-mirror/ i klienty synchronizacji z tym powielaniem:

  1. Utwórz i zsynchronizuj kopię lustrzaną:

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

    Te polecenia tworzą lokalne odbicie lustrzane w /user/local/aosp/mirror oraz zainicjuj duplikat przy użyciu flagi --mirror z repo init .

  2. Aby zsynchronizować klienty z serwera lustrzanego:

    $ mkdir -p /usr/local/aosp/main
    $ cd /usr/local/aosp/main
    $ repo init -u /usr/local/aosp/mirror/platform/manifest.git
    $ repo sync
    
  3. Na koniec postępuj zgodnie z tymi poleceniami, aby zsynchronizować serwer z serwerem i zsynchronizować klienta z serwerem lustrzanym:

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

Możesz zapisać replikę na serwerze LAN i korzystać z niej przez NFS. SSH lub Git. Na dysku wymiennym można go też przechowywać które pędzą między użytkownikami lub komputerami.

Użyj klonu częściowego

Jeśli używasz Git w wersji 2.19 lub nowszej, określ --partial-clone, gdy wykonując repo init, aby rozwiązać problemy sieciowe z małymi opóźnieniami:

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

Zamiast inicjować repozytorium w celu pobrania wszystkiego, to polecenie pobiera Git w razie potrzeby.

Rozwiązywanie konkretnych problemów z synchronizacją

Na tej stronie znajdują się szczegółowe informacje na temat niektórych znanych problemów, które mogą wystąpić podczas próby synchronizacji Kod źródłowy Androida.

Polecenia kończą się błędem 403 lub 500 (problemy z serwerem proxy)

Polecenia repo init lub repo sync mogą zakończyć się błędem 403 lub 500 . Zwykle te błędy są związane z serwerami proxy HTTP, które mają trudności z do obsługi dużych transferów danych.

Chociaż nie ma konkretnej poprawki na te błędy, użycie najnowszej wersji Pythona repo sync -j1, a jej użycie może być pomocne.