تحديد المشاكل في المزامنة وحلّها

تشرح هذه الصفحة كيفية استكشاف الأخطاء وإصلاحها الأمر repo sync.

إصلاح مشاكل الشبكة

يقدم هذا القسم عدة اقتراحات لإصلاح مشكلات الشبكة التي يمكن أن إلى عدم نجاح عمليات المزامنة.

استخدام المصادقة لتجنّب القيود المفروضة على الحصة

لحماية الخوادم من الاستخدام المفرط، يتم استخدام كل عنوان IP ومصدر الوصول هذا مرتبط بحصة.

عند مشاركة عنوان IP مع مستخدمين آخرين، مثلاً عند الوصول إلى المصدر مستودعات تتجاوز جدار حماية NAT، يمكن أن تعمل الحصص أنماط. على سبيل المثال، يمكن تطبيق حصة عندما يقوم عدة مستخدمين بمزامنة برامج جديدة من عنوان IP نفسه خلال فترة قصيرة.

ولتجنّب تفعيل الحصص، يمكنك استخدام إذن الوصول الذي تمت مصادقته والذي يستخدم حصة منفصلة لكل مستخدم، بغض النظر عن عنوان IP.

لتفعيل إمكانية الوصول المصادَق عليها:

  1. إنشاء كلمة مرور باستخدام أداة إنشاء كلمات المرور

  2. شغّل الأمر التالي لتحويل البرنامج لاستخدام الإعداد التلقائي المصادقة (بدون تغيير الفرع):

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

    يُرجى العلم أنّ بادئة الدليل /a/ تؤدي إلى تفعيل المصادقة التلقائية.

الإعداد لاستخدام الخادم الوكيل

إذا كنت تنزّل المصدر من وراء خادم وكيل، كما هو شائع في بعض لبيئات الشركات، تأكَّد من التحديد الصريح لخادم Repo لاستخدامه من قِبل تشغيل هذه الأوامر:

$ 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 لتجنب مشاكل الاتصال

وهو أمر نادر الحدوث، يمكن لعملاء Linux مواجهة مشكلات في الاتصال، مثل التعثر في منتصف عمليات التنزيل أثناء استلام الكائنات. للتحسين هذه المشكلة، قم بضبط إعدادات حزم TCP/IP أو استخدم نماذج غير موازية الاتصالات. يجب أن يكون لديك حق الوصول إلى الجذر لتعديل إعداد TCP. لتعديل الأمر، فقم بإصدار الأوامر التالية:

$ sudo sysctl -w net.ipv4.tcp_window_scaling=0
$ repo sync -j1

استخدام النسخ المطابق المحلي لتجنب وقت استجابة الشبكة

عند استخدام عدة عملاء، يمكنك إنشاء نسخة مطابقة محلية للخادم بالكامل المحتوى ومزامنة البرامج من تلك النسخة المطابقة تمامًا دون الدخول إلى الشبكة. اتبع هذه التعليمات لإنشاء انعكاس محلي في ~/aosp-mirror/ ومزامنة البرامج مع تلك النسخة المطابقة:

  1. إنشاء النسخة المطابقة ومزامنتها:

    $ mkdir -p /usr/local/aosp/mirror
    $ cd /usr/local/aosp/mirror
    $ repo init -u https://android.googlesource.com/mirror/manifest --mirror
    

    تنشئ هذه الأوامر نسخة مطابقة محلية في /user/local/aosp/mirror إعداد المرآة باستخدام العلامة --mirror مع العلامة repo init الأمر.

  2. لمزامنة البرامج من النسخ المطابق:

    $ mkdir -p /usr/local/aosp/main
    $ cd /usr/local/aosp/main
    $ repo init -u /usr/local/aosp/mirror/platform/manifest.git
    $ repo sync
    
  3. أخيرًا، اتبع هذه الأوامر لمزامنة النسخ المطابق مع الخادم ومزامنة البرنامج مع النسخة المطابقة:

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

يمكن تخزين المرآة على خادم LAN والوصول إليها عبر نظام تخزين ملفات الشبكة، أو SSH أو Git. ويمكن أيضًا تخزينها على محرك أقراص قابل للإزالة وتمرير التي تنتقل بين المستخدمين أو الأجهزة.

استخدام استنساخ جزئي

إذا كنت تستخدم الإصدار 2.19 من Git أو إصدارًا أحدث، حدِّد --partial-clone إجراء repo init للتغلب على أي مشاكل في الشبكة بوقت استجابة سريع:

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

بدلاً من تهيئة Repo لتنزيل كل شيء، يقوم هذا الأمر بتنزيل Git الكائنات حسب الحاجة.

إصلاح مشاكل محدّدة في المزامنة

تعرض هذه الصفحة بالتفصيل بعض المشكلات المعروفة التي قد تواجهها أثناء محاولة مزامنة رمز المصدر لنظام Android.

فشل الأوامر مع ظهور الخطأ 403 أو 500 (مشاكل الخادم الوكيل)

قد يتعذّر تنفيذ الأمرين repo init أو repo sync مع الخطأ 403 أو 500. خطأ. في أغلب الأحيان تكون هذه الأخطاء مرتبطة بخوادم وكيل HTTP التي تواجه صعوبة في التعامل مع عمليات نقل البيانات الكبيرة.

وعلى الرغم من عدم وجود إصلاح محدد لهذه الأخطاء، إلا أن استخدام أحدث إصدار من بايثون الإصدار واستخدام repo sync -j1 بشكل صريح إلى حل المشكلة.