Bu sayfada repo sync
komutuyla ilgili sorunların nasıl giderileceği ve düzeltileceği açıklanmaktadır.
Ağ sorunlarını düzeltme
Bu bölümde başarısız senkronizasyonlara neden olabilecek ağ sorunlarını düzeltmeye yönelik çeşitli öneriler sunulmaktadır.
Kota engellerini önlemek için kimlik doğrulamayı kullanın
Sunucuları aşırı kullanıma karşı korumak için kaynağa erişimde kullanılan her IP adresi bir kota ile ilişkilendirilir.
Bir IP adresini diğer kullanıcılarla paylaşırken, örneğin kaynak depolarına NAT güvenlik duvarının ötesinden erişirken, normal kalıplar için kotalar tetiklenebilir. Örneğin, birkaç kullanıcı kısa bir süre içinde aynı IP adresinden yeni istemcileri senkronize ettiğinde bir kota tetiklenebilir.
Kotaların tetiklenmesini önlemek amacıyla, IP adresinden bağımsız olarak her kullanıcı için ayrı bir kota kullanan kimlik doğrulamalı erişimi kullanabilirsiniz.
Kimlik doğrulamalı erişimi etkinleştirmek için:
Şifre oluşturucuyla bir şifre oluşturun.
İstemcinizi otomatik kimlik doğrulamayı kullanacak şekilde dönüştürmek için aşağıdaki komutu çalıştırın (dal değiştirmeden):
$ repo init -u https://android.googlesource.com/a/platform/manifest
/a/
dizin önekinin otomatik kimlik doğrulamayı tetiklediğini unutmayın.
Proxy kullanımı için yapılandırma
Bazı kurumsal ortamlarda yaygın olduğu gibi, kaynağı bir proxy arkasından indiriyorsanız, aşağıdaki komutları çalıştırarak Repo'nun kullanacağı bir proxy'yi açıkça belirttiğinizden emin olun:
$ 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
Bağlantı sorunlarını önlemek için TCP/IP ayarlarını yapın
Nadir de olsa Linux istemcileri, nesneleri alırken indirme işleminin ortasında takılmak gibi bağlantı sorunları yaşayabilir. Bu sorunu iyileştirmek için TCP/IP yığınının ayarlarını düzenleyin veya paralel olmayan bağlantılar kullanın. TCP ayarını değiştirmek için root erişiminizin olması gerekir. Ayarı değiştirmek için aşağıdaki komutları verin:
$ sudo sysctl -w net.ipv4.tcp_window_scaling=0
$ repo sync -j1
Ağ gecikmesini önlemek için yerel bir ayna kullanın
Birden fazla istemci kullanırken, tüm sunucu içeriğinin yerel bir yansımasını oluşturabilir ve istemcileri ağa erişmeden bu yansımadan senkronize edebilirsiniz. ~/aosp-mirror/
adresinde yerel bir ayna oluşturmak ve istemcileri bu aynayla senkronize etmek için bu talimatları izleyin:
Aynayı oluşturun ve senkronize edin:
$ mkdir -p /usr/local/aosp/mirror $ cd /usr/local/aosp/mirror $ repo init -u https://android.googlesource.com/mirror/manifest --mirror
Bu komutlar
/user/local/aosp/mirror
dosyasında yerel bir ayna oluşturur verepo init
komutuyla--mirror
bayrağını kullanarak aynayı başlatır.İstemcileri aynadan senkronize etmek için:
$ mkdir -p /usr/local/aosp/main $ cd /usr/local/aosp/main $ repo init -u /usr/local/aosp/mirror/platform/manifest.git $ repo sync
Son olarak, aynayı sunucuyla senkronize etmek ve istemciyi aynayla senkronize etmek için şu komutları izleyin:
$ cd /usr/local/aosp/mirror</code> $ repo sync $ cd /usr/local/aosp/main $ repo sync
Aynayı bir LAN sunucusunda depolamak ve ona NFS, SSH veya Git üzerinden erişmek mümkündür. Çıkarılabilir bir sürücüde saklamak ve bu sürücüyü kullanıcılar veya makineler arasında aktarmak da mümkündür.
Kısmi bir klon kullanın
Git sürüm 2.19 veya üstünü kullanıyorsanız, düşük gecikmeli ağ sorunlarının üstesinden gelmek için repo init
gerçekleştirirken --partial-clone
belirtin:
$ repo init -u https://android.googlesource.com/platform/manifest -b main --partial-clone --clone-filter=blob:limit=10M
Her şeyi indirmek için Repo'yu başlatmak yerine, bu komut Git nesnelerini ihtiyaç duyuldukça indirir.
Belirli senkronizasyon sorunlarını düzeltme
Bu sayfada, Android kaynak kodunu senkronize etmeye çalışırken karşılaşabileceğiniz bazı bilinen sorunların ayrıntıları verilmektedir.
Komutlar 403 veya 500 hatasıyla başarısız oluyor (proxy sorunları)
repo init
veya repo sync
komutları 403 veya 500 hatasıyla başarısız olabilir. Çoğu zaman bu hatalar, büyük veri aktarımlarını gerçekleştirmekte zorlanan HTTP proxy'leriyle ilgilidir.
Bu hatalara yönelik belirli bir düzeltme olmasa da, en son Python sürümünü kullanmak ve açıkça repo sync -j1
kullanmak bazen yardımcı olabilir.