توضّح هذه الصفحة كيفية تحديد المشاكل وحلّها المتعلّقة بأمر repo sync.
إصلاح مشكلات الشبكة
يعرض هذا القسم عدة اقتراحات لإصلاح مشكلات الشبكة التي يمكن أن تؤدي إلى عمليات مزامنة غير ناجحة.
استخدام المصادقة لتجنُّب حواجز الحصص
لحماية الخوادم من الاستخدام المفرط، يتم ربط كل عنوان IP يُستخدَم للوصول إلى المصدر بحصة.
عند مشاركة عنوان IP مع مستخدمين آخرين، مثلاً عند الوصول إلى مستودعات المصدر من خارج جدار حماية NAT، يمكن أن يتم تفعيل الحصص لأنماط الاستخدام العادية. على سبيل المثال، يمكن تفعيل الحصة عندما يزامِن عدة مستخدمين عملاء جدد من عنوان IP نفسه، خلال فترة قصيرة.
لتجنُّب تفعيل الحصص، يمكنك استخدام الوصول المصادَق عليه، الذي يستخدم حصة منفصلة لكل مستخدم، بغض النظر عن عنوان IP.
لتفعيل الوصول المصادَق عليه:
أنشئ كلمة مرور باستخدام أداة إنشاء كلمات المرور.
نفِّذ الأمر التالي لتحويل عميلك إلى استخدام المصادقة التلقائية (بدون تغيير الفرع):
$ 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/ ومزامنة العملاء مع هذه النسخة:
أنشئ النسخة طبق الأصل وقم بمزامنتها:
$ 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.زامِن العملاء من النسخة طبق الأصل:
$ mkdir -p /usr/local/aosp/main $ cd /usr/local/aosp/main $ repo init -u /usr/local/aosp/mirror/platform/manifest.git -b android-latest-release $ repo syncزامِن النسخة طبق الأصل مع الخادم وزامِن العملاء مع النسخة طبق الأصل:
$ cd /usr/local/aosp/mirror $ repo sync $ cd /usr/local/aosp/android-latest-release $ repo sync
يمكنك تخزين النسخة طبق الأصل على خادم شبكة LAN والوصول إليها عبر NFS أو SSH أو Git. يمكنك أيضًا تخزينها على محرك أقراص قابل للإزالة وتمرير محرك الأقراص هذا بين المستخدمين أو الأجهزة.
استخدام نسخة مستنسخة جزئية
إذا كنت تستخدم الإصدار 2.19 من Git أو إصدارًا أحدث، حدِّد --partial-clone عند تنفيذ repo init للتغلّب على أي مشاكل في الشبكة ذات التأخير المنخفض:
$ repo init -u https://android.googlesource.com/platform/manifest -b android-latest-release --partial-clone --clone-filter=blob:limit=10M
بدلاً من تهيئة Repo لتنزيل كل شيء، ينزِّل هذا الأمر عناصر Git حسب الحاجة إليها.
تحديد مشاكل الخطأين 403 أو 500 وحلّها (مشاكل الخادم الوكيل)
قد يفشل الأمران repo init أو repo sync مع ظهور الخطأ 403 أو 500. غالبًا ما تكون هذه الأخطاء مرتبطة بالخوادم الوكيلة لبروتوكول HTTP التي تواجه صعوبة في التعامل مع عمليات نقل البيانات الكبيرة.
على الرغم من عدم توفّر حلّ محدّد لهذه الأخطاء، يمكن أن يساعد أحيانًا استخدام أحدث إصدار من Python واستخدام repo sync -j1 بشكل صريح.