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

تشرح هذه الصفحة كيفية استكشاف الأخطاء وإصلاحها الأمر 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 التي تواجه صعوبة في التعامل مع عمليات نقل البيانات الكبيرة.

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