Senkronizasyon sorunlarını giderme ve düzeltme

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:

  1. Şifre oluşturucuyla bir şifre oluşturun.

  2. İ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:

  1. 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 ve repo init komutuyla --mirror bayrağını kullanarak aynayı başlatır.

  2. İ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
    
  3. 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.