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żywanie uwierzytelniania, aby uniknąć ograniczeń związanych z limitem
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ąć przekroczenia limitów, możesz użyć uwierzytelnionego dostępu, który korzysta z osobnego limitu dla każdego użytkownika niezależnie od adresu IP.
Aby włączyć uwierzytelnianie:
Utwórz hasło za pomocą generatora haseł.
Aby przekształcić klienta w klienta korzystającego z automatycznej uwierzytelniania (bez zmiany gałęzi), uruchom to polecenie:
$ repo init -u https://android.googlesource.com/a/platform/manifest
Pamiętaj, że prefiks katalogu
/a/
aktywuje automatyczne uwierzytelnianie.
Konfigurowanie 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
Dostosowywanie ustawień TCP/IP, aby uniknąć problemów z łącznością
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
Jeśli używasz kilku klientów, możesz utworzyć lokalny klon całego serwera i synchronizować klientów z tego klonu bez dostępu do sieci. Postępuj zgodnie z tymi instrukcjami, aby utworzyć lokalne odbicie lustrzane w
~/aosp-mirror/
i klienty synchronizacji z tym powielaniem:
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ą lokalny klon w
/user/local/aosp/mirror
i inicjują klon za pomocą flagi--mirror
w ramach poleceniarepo init
.Aby zsynchronizować klientów z lustra:
$ mkdir -p /usr/local/aosp/main $ cd /usr/local/aosp/main $ repo init -u /usr/local/aosp/mirror/platform/manifest.git $ repo sync
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. Można je też przechowywać na dysku wymiennym i przekazywać między użytkownikami lub komputerami.
Używanie częściowego klona
Jeśli używasz Git w wersji 2.19 lub nowszej, podczas wykonywania polecenia repo init
podaj parametr --partial-clone
, aby rozwiązać problemy z siecią o niskim opóźnieniu:
$ repo init -u https://android.googlesource.com/platform/manifest -b main --partial-clone --clone-filter=blob:limit=10M
Zamiast inicjalizować repozytorium, aby pobrać wszystko, to polecenie pobiera obiekty Git w miarę 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ą się nie udać z błędem 403 lub 500. Najczęściej te błędy są związane z serwerami proxy HTTP, które mają problemy z obsługą dużych transferów danych.
Nie ma konkretnego rozwiązania tych błędów, ale czasami może pomóc korzystanie z najnowszej wersji Pythona i wyraźne użycie repo sync -j1
.