Auf dieser Seite wird erläutert, wie Sie Probleme mit dem Befehl repo sync
beheben können.
Netzwerkprobleme beheben
In diesem Abschnitt finden Sie mehrere Vorschläge zur Behebung von Netzwerkproblemen, die zu fehlgeschlagenen Synchronisierungen führen können.
Authentifizierung verwenden, um Kontingentbeschränkungen zu vermeiden
Um die Server vor übermäßiger Nutzung zu schützen, ist jeder IP-Adresse, die für den 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 von außerhalb einer NAT-Firewall, können Kontingente für normale Muster ausgelöst werden. Ein Kontingent kann beispielsweise ausgelöst werden, wenn mehrere Nutzer innerhalb kurzer Zeit neue Clients über dieselbe IP-Adresse synchronisieren.
Um Kontingente nicht zu überschreiten, können Sie den authentifizierten Zugriff verwenden. Dabei wird für jeden Nutzer ein separates Kontingent verwendet, 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 automatische Authentifizierung zu konvertieren (ohne den Branch zu ändern):
$ repo init -u https://android.googlesource.com/a/platform/manifest
Beachten Sie, dass das Verzeichnispräfix
/a/
die automatische Authentifizierung auslöst.
Für die Verwendung eines Proxys konfigurieren
Wenn Sie Quellcode über einen Proxy herunterladen, wie es in einigen Unternehmensumgebungen üblich ist, müssen Sie einen Proxy für Repo explizit angeben, indem Sie die folgenden Befehle ausführen:
$ 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
Obwohl es selten vorkommt, können bei Linux-Clients Verbindungsprobleme auftreten, z. B. wenn Downloads beim Empfangen von Objekten hängen 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
Lokalen Spiegelserver 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. So erstellen Sie einen lokalen Spiegel in ~/aosp-mirror/
und synchronisieren Clients mit diesem Spiegel:
Spiegel erstellen und synchronisieren:
$ 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.Clients über die Spiegelung synchronisieren:
$ 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
Spiegel mit dem Server und Clients mit dem Spiegel synchronisieren:
$ cd /usr/local/aosp/mirror</code> $ repo sync $ cd /usr/local/aosp/android-latest-release $ repo sync
Es ist möglich, den Spiegel auf einem LAN-Server zu speichern und über NFS, SSH oder Git darauf zuzugreifen. Sie können sie auch auf einem Wechseldatenträger speichern und diesen zwischen Nutzern oder Computern 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 Probleme mit Netzwerken mit niedriger Latenz zu beheben:
$ repo init -u https://android.googlesource.com/platform/manifest -b android-latest-release --partial-clone --clone-filter=blob:limit=10M
Anstatt Repo zu initialisieren, um alles herunterzuladen, werden mit diesem Befehl Git-Objekte nach Bedarf heruntergeladen.
403- oder 500-Fehler beheben (Proxy-Probleme)
Die Befehle repo init
oder repo sync
können mit einem 403- oder 500-Fehler fehlschlagen. Diese Fehler hängen meist damit zusammen, dass HTTP-Proxys Probleme mit der Verarbeitung großer Datenübertragungen haben.
Es gibt keine spezifische Lösung für diese Fehler, aber die Verwendung der neuesten Python-Version und die explizite Verwendung von repo sync -j1
kann manchmal helfen.