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 zugeordnet.
Wenn Sie eine IP-Adresse mit anderen Nutzern teilen, z. B. beim Zugriff auf die Quell-Repositories über eine NAT-Firewall hinaus, können Kontingente für normale Muster ausgelöst werden. Ein Kontingent kann beispielsweise ausgelöst werden, wenn mehrere Nutzer innerhalb kurzer Zeit neue Kunden von derselben IP-Adresse aus synchronisieren.
Um das Auslösen von Kontingenten zu vermeiden, können Sie den authentifizierten Zugriff verwenden. Dabei wird unabhängig von der IP-Adresse ein separates Kontingent für jeden Nutzer verwendet.
So aktivieren Sie den authentifizierten Zugriff:
Erstellen Sie mit dem Passwortgenerator ein Passwort.
Führen Sie den folgenden Befehl aus, um Ihren Client auf die automatische Authentifizierung umzustellen (ohne den Branch zu ändern):
$ repo init -u https://android.googlesource.com/a/platform/manifest
Das Verzeichnispräfix
/a/
löst eine automatische Authentifizierung aus.
Für 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. Um dieses Problem zu beheben, passen Sie die Einstellungen des TCP/IP-Stacks an oder verwenden Sie nicht parallele 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
Verwenden Sie einen lokalen Spiegel, 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. Folgen Sie dieser Anleitung, um einen lokalen Spiegel in at~/aosp-mirror/
zu erstellen und Clients mit diesem Spiegel zu synchronisieren:
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 Flag--mirror
und dem Befehlrepo init
initialisiert.So synchronisieren Sie Clients über den 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 das Repository zu initialisieren, um alles herunterzuladen, werden mit diesem Befehl Git-Objekte nach Bedarf heruntergeladen.
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 einem 403- oder 500-Fehler fehl. In den meisten Fällen hängen diese Fehler mit HTTP-Proxys zusammen, die große Datenübertragungen nicht bewältigen können.
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.