استكشاف أخطاء المزامنة وإصلاحها

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

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

إذا كنت تستخدم Git الإصدار 2.19 أو أحدث، فحدد --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 بشكل صريح يمكن أن يساعد في بعض الأحيان.