توضّح هذه الصفحة كيفية تحديد المشاكل المتعلّقة بأمر
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 $ repo sync
أخيرًا، اتّبِع الأوامر التالية لمزامنة النسخة المطابقة مع الخادم ومزامنة العميل مع النسخة المطابقة:
$ cd /usr/local/aosp/mirror</code> $ repo sync $ cd /usr/local/aosp/main $ repo sync
من الممكن تخزين النسخة المطابقة على خادم شبكة المنطقة المحلية والوصول إليها عبر NFS أو 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
بشكل صريح.