Na tej stronie znajdziesz informacje o tym, jak rozwiązywać problemy związane z poleceniem repo sync
.
Rozwiązywanie problemów z siecią
W tej sekcji znajdziesz kilka sugestii dotyczących rozwiązywania problemów z siecią, które mogą powodować nieudaną synchronizację.
Używaj uwierzytelniania, aby uniknąć limitów
Aby chronić serwery przed nadmiernym wykorzystaniem, każdy adres IP używany do uzyskiwania dostępu do źródła jest powiązany z limitem.
Gdy adres IP jest udostępniany innym użytkownikom, np. podczas uzyskiwania dostępu do repozytoriów źródłowych spoza zapory sieciowej NAT, limity mogą być wywoływane w przypadku normalnych wzorców. Na przykład limit może zostać wywołany, gdy kilku użytkowników zsynchronizuje nowych klientów z tego samego adresu IP w krótkim czasie.
Aby uniknąć przekroczenia limitów, możesz użyć uwierzytelnionego dostępu, który wykorzystuje oddzielny limit dla każdego użytkownika, niezależnie od adresu IP.
Aby włączyć uwierzytelniony dostęp:
Utwórz hasło za pomocą generatora haseł.
Aby przekonwertować klienta na automatyczne uwierzytelnianie (bez zmiany gałęzi), uruchom to polecenie:
$ repo init -u https://android.googlesource.com/a/platform/manifest
Pamiętaj, że prefiks katalogu
/a/
wywołuje automatyczne uwierzytelnianie.
Konfigurowanie serwera proxy
Jeśli pobierasz źródło zza serwera proxy, co jest powszechne w niektórych środowiskach korporacyjnych, upewnij się, że wyraźnie określisz serwer proxy, którego ma używać Repo. W tym celu wykonaj te polecenia:
$ 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
Dostosowywanie ustawień TCP/IP, aby uniknąć problemów z łącznością
Choć zdarza się to rzadko, klienci korzystający z systemu Linux mogą mieć problemy z łącznością, np. zawieszać się w trakcie pobierania obiektów. Aby rozwiązać ten problem, dostosuj ustawienia stosu TCP/IP lub użyj połączeń nieparalelnych. Aby zmodyfikować ustawienie TCP, musisz mieć dostęp do roota. Aby zmodyfikować ustawienie, wydaj te polecenia:
$ sudo sysctl -w net.ipv4.tcp_window_scaling=0
$ repo sync -j1
Używanie lokalnego serwera kopii, aby uniknąć opóźnień w sieci
Jeśli używasz kilku klientów, możesz utworzyć lokalną kopię całego serwera i synchronizować klientów z tej kopii bez dostępu do sieci. Aby utworzyć lokalną kopię lustrzaną w ~/aosp-mirror/
i zsynchronizować z nią klientów, wykonaj te czynności:
Utwórz i zsynchronizuj kopię:
$ mkdir -p /usr/local/aosp/mirror $ cd /usr/local/aosp/mirror $ repo init -u https://android.googlesource.com/mirror/manifest --mirror
Te polecenia tworzą lokalną kopię w
/user/local/aosp/mirror
i inicjują ją za pomocą flagi--mirror
w poleceniurepo init
.Synchronizuj klientów z kopii:
$ mkdir -p /usr/local/aosp/main $ cd /usr/local/aosp/main $ repo init -u /usr/local/aosp/mirror/platform/manifest.git -b android-latest-release $ repo sync
Zsynchronizuj kopię z serwerem i zsynchronizuj klientów z kopią:
$ cd /usr/local/aosp/mirror</code> $ repo sync $ cd /usr/local/aosp/android-latest-release $ repo sync
Kopię można przechowywać na serwerze LAN i uzyskiwać do niej dostęp przez NFS, SSH lub Git. Można go też przechowywać na dysku wymiennym i przekazywać go między użytkownikami lub urządzeniami.
Używanie częściowego klonu
Jeśli używasz Git w wersji 2.19 lub nowszej, podczas wykonywania polecenia repo init
określ --partial-clone
, aby rozwiązać problemy z siecią o małych opóźnieniach:
$ repo init -u https://android.googlesource.com/platform/manifest -b android-latest-release --partial-clone --clone-filter=blob:limit=10M
Zamiast inicjować Repo, aby pobrać wszystko, to polecenie pobiera obiekty Git, gdy są potrzebne.
Rozwiązywanie błędów 403 lub 500 (problemy z serwerem proxy)
Polecenia repo init
lub repo sync
mogą zakończyć się niepowodzeniem z błędem 403 lub 500. Najczęściej błędy te są związane z tym, że serwery proxy HTTP mają problemy z obsługą dużych transferów danych.
Nie ma konkretnego rozwiązania tych błędów, ale czasami pomaga używanie najnowszej wersji Pythona i jawne używanie repo sync -j1
.