Senkronizasyon sorunlarını giderme ve düzeltme

Bu sayfada, repo sync komutuyla ilgili sorunların nasıl giderileceği açıklanmaktadır.

Ağ sorunlarını düzelt

Bu bölümde, senkronizasyonun başarısız olmasına neden olabilecek ağ sorunlarını düzeltmek için çeşitli öneriler sunulmaktadır.

Kota engellerini önlemek için kimlik doğrulamayı kullanma

Sunucuları aşırı kullanıma karşı korumak için kaynağa erişmek için kullanılan her IP adresi bir kotayla ilişkilendirilir.

Bir IP adresini diğer kullanıcılarla paylaşırken (ör. NAT güvenlik duvarının ötesinden kaynak depolarına 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 kota tetiklenebilir.

Kotaların tetiklenmesini önlemek için kimliği doğrulanmış erişimi kullanabilirsiniz. Bu erişim yönteminde, IP adresinden bağımsız olarak her kullanıcı için ayrı bir kota kullanılır.

Kimlik doğrulamalı erişimi etkinleştirmek için:

  1. Şifre oluşturucuyu kullanarak bir şifre oluşturun.

  2. İstemcinizi otomatik kimlik doğrulama kullanacak şekilde dönüştürmek için şu komutu çalıştırın (dal değiştirmeden):

    $ repo init -u https://android.googlesource.com/a/platform/manifest
    

    /a/ dizin ön ekinin otomatik kimlik doğrulamasını tetiklediğini unutmayın.

Proxy kullanımı için yapılandırma

Bazı kurumsal ortamlarda yaygın olduğu gibi, kaynağı bir proxy üzerinden indiriyorsanız aşağıdaki komutları çalıştırarak Repo'nun kullanacağı 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ı düzenleme

Nadir de olsa Linux istemcileri, nesneleri alırken indirme işleminin ortasında takılma 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 kök erişiminiz olmalıdır. Ayarı değiştirmek için aşağıdaki komutları girin:

$ 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 sunucu içeriğinin tamamının yerel bir aynasını oluşturabilir ve ağa erişmeden istemcileri bu aynadan senkronize edebilirsiniz. ~/aosp-mirror/ üzerinde yerel bir ayna oluşturmak ve istemcileri bu aynayla senkronize etmek için aşağıdaki talimatları uygulayın:

  1. Yansıtmayı 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 içinde bir yerel yansıtma oluşturur ve repo init komutuyla --mirror işaretini kullanarak yansıtmayı başlatır.

  2. İstemcileri yansıtmadan 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
    
  3. Son olarak, aynayı sunucuya ve istemciyi aynaya senkronize etmek için aşağıdaki komutları uygulayın:

    $ cd /usr/local/aosp/mirror</code>
    $ repo sync
    $ cd /usr/local/aosp/main
    $ repo sync
    

Yansıtmayı bir LAN sunucusunda depolamak ve NFS, SSH veya Git üzerinden ona erişmek mümkündür. Ayrıca, çıkarılabilir bir sürücüde saklayıp bu sürücüyü kullanıcılar veya makineler arasında aktarabilirsiniz.

Kısmi kopya kullanma

Git 2.19 veya sonraki bir sürümü kullanıyorsanız düşük gecikmeli ağ sorunlarını önlemek için repo init işlemini gerçekleştirirken --partial-clone seçeneğini belirtin:

  $ repo init -u https://android.googlesource.com/platform/manifest -b main --partial-clone --clone-filter=blob:limit=10M

Bu komut, Repo'yu her şeyi indirecek şekilde başlatmak yerine Git nesnelerini gerektiğinde indirir.

Belirli senkronizasyon sorunlarını düzeltme

Bu sayfada, Android kaynak kodunu senkronize etmeye çalışırken karşılaşabileceğiniz bazı bilinen sorunlar ayrıntılı olarak açıklanmıştır.

Komutlar 403 veya 500 hatasıyla başarısız oluyor (proxy sorunları)

repo init veya repo sync komutları 403 ya da 500 hatasıyla başarısız olabilir. Bu hatalar genellikle büyük veri aktarımlarını yürütmekte zorlanan HTTP proxy'leriyle ilgilidir.

Bu hatalar için belirli bir düzeltme olmasa da en son Python sürümünü kullanmak ve repo sync -j1'ü açıkça kullanmak bazen yardımcı olabilir.