Auf dieser Seite wird beschrieben, wie Sie Probleme im Zusammenhang mit dem Befehl repo sync
beheben.
Netzwerkprobleme beheben
In diesem Abschnitt finden Sie mehrere Vorschläge zur Behebung von Netzwerkproblemen, die zu fehlerhaften Synchronisierungen führen können.
Authentifizierung verwenden, um Kontingentbeschränkungen zu vermeiden
Zum Schutz der Server vor übermäßiger Nutzung ist jeder IP-Adresse, die zum Zugriff auf die Quelle verwendet wird, ein Kontingent zugewiesen.
Wenn Sie eine IP-Adresse für andere Nutzer freigeben, z. B. wenn Sie von außerhalb einer NAT-Firewall auf die Quell-Repositories zugreifen, können für normale Muster Quoten ausgelöst werden. Ein Kontingent kann beispielsweise ausgelöst werden, wenn mehrere Nutzer neue Clients synchronisieren von derselben IP-Adresse gesendet werden.
Um das Auslösen von Kontingenten zu vermeiden, können Sie den authentifizierten Zugriff verwenden, bei dem ein separate Kontingente für jeden Nutzer, unabhängig von der IP-Adresse.
So aktivieren Sie den authentifizierten Zugriff:
Erstellen Sie ein Passwort mit dem Passwortgenerator.
Führen Sie den folgenden Befehl aus, um Ihren Client für die Verwendung automatischer Authentifizierung (ohne Zweig zu ändern):
$ repo init -u https://android.googlesource.com/a/platform/manifest
Das Verzeichnispräfix
/a/
löst eine automatische Authentifizierung aus.
Für die Proxy-Nutzung konfigurieren
Wenn Sie die Quelle wie in einigen Unternehmensumgebungen üblich über einen Proxy herunterladen, müssen Sie einen Proxy für Repo explizit angeben. Führen Sie dazu die folgenden Befehle aus:
$ 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
TCP/IP-Einstellungen anpassen, um Verbindungsprobleme zu vermeiden
Bei Linux-Clients können selten Verbindungsprobleme auftreten, z. B. wenn Downloads beim Empfangen von Objekten stecken bleiben. Zur Verbesserung Passen Sie die Einstellungen des TCP/IP-Stacks an oder verwenden Sie einen nicht parallelen Verbindungen. Sie benötigen Root-Zugriff, um die TCP-Einstellung zu ändern. Führen Sie die folgenden Befehle aus, um die Einstellung zu ändern:
$ sudo sysctl -w net.ipv4.tcp_window_scaling=0
$ repo sync -j1
Lokalen Mirror verwenden, um Netzwerklatenz zu vermeiden
Wenn Sie mehrere Clients verwenden, können Sie einen lokalen Spiegel des gesamten Serverinhalts erstellen und Clients über diesen Spiegel synchronisieren, ohne auf das Netzwerk zuzugreifen. Befolgen Sie diese Anweisungen, um eine lokale Spiegelung unter
~/aosp-mirror/
und synchronisieren Sie Clients mit diesem Spiegel:
So erstellen und synchronisieren Sie den Spiegel:
$ mkdir -p /usr/local/aosp/mirror $ cd /usr/local/aosp/mirror $ repo init -u https://android.googlesource.com/mirror/manifest --mirror
Mit diesen Befehlen wird ein lokaler Spiegel in
/user/local/aosp/mirror
erstellt und mit dem Befehlrepo init
und dem Flag--mirror
initialisiert.So synchronisieren Sie Clients vom Spiegel:
$ mkdir -p /usr/local/aosp/main $ cd /usr/local/aosp/main $ repo init -u /usr/local/aosp/mirror/platform/manifest.git $ repo sync
Führen Sie abschließend die folgenden Befehle aus, um den Spiegel mit dem Server und den Client mit dem Spiegel zu synchronisieren:
$ cd /usr/local/aosp/mirror</code> $ repo sync $ cd /usr/local/aosp/main $ repo sync
Sie können den Mirror auf einem LAN-Server speichern und über NFS, SSH oder Git darauf zugreifen. Sie können die Datei auch auf einem Wechseldatenträger speichern und diesen an andere Nutzer oder Computer weitergeben.
Teilklon verwenden
Wenn Sie Git-Version 2.19 oder höher verwenden, geben Sie --partial-clone
an, wenn Sie repo init
ausführen, um Netzwerkprobleme mit niedriger Latenz zu beheben:
$ repo init -u https://android.googlesource.com/platform/manifest -b main --partial-clone --clone-filter=blob:limit=10M
Anstatt Repository zu initialisieren, um alles herunterzuladen, wird mit diesem Befehl Git heruntergeladen je nach Bedarf.
Bestimmte Synchronisierungsprobleme beheben
Auf dieser Seite werden einige bekannte Probleme beschrieben, die beim Synchronisieren des Android-Quellcodes auftreten können.
Befehle schlagen mit dem Fehler 403 oder 500 fehl (Proxy-Probleme)
Die Befehle repo init
oder repo sync
schlagen möglicherweise mit dem Fehler 403 oder 500 fehl.
Fehler. Meistens sind diese Fehler
auf HTTP-Proxys zurückzuführen, die Probleme haben,
große Datenübertragungen zu bewältigen.
Es gibt zwar keine spezielle Lösung für diese Fehler, aber manchmal hilft es, die neueste Python-Version zu verwenden und repo sync -j1
explizit anzugeben.