בדף הזה מוסבר איך לפתור בעיות שקשורות לפקודה repo sync
.
פתרון בעיות ברשת
בקטע הזה מפורטות כמה הצעות לפתרון בעיות ברשת שיכולות לגרום לכך שהסנכרון לא יצליח.
שימוש באימות כדי להימנע ממגבלות מכסה
כדי להגן על השרתים מפני שימוש מוגזם, כל כתובת IP שמשמשת לגישה למקור משויכת למכסה.
כשמשתפים כתובת IP עם משתמשים אחרים, למשל כשניגשים למאגרי המקורות מחוץ לחומת אש של NAT, יכול להיות שהמכסות יופעלו בדפוסים רגילים. לדוגמה, יכול להיות שמכסת השימוש תופעל כשכמה משתמשים מסנכרנים לקוחות חדשים מאותה כתובת IP, בפרק זמן קצר.
כדי להימנע מהפעלת מכסות, אפשר להשתמש בגישה מאומתת, שבה יש מכסה נפרדת לכל משתמש, ללא קשר לכתובת ה-IP.
כדי להפעיל גישה מאומתת:
ליצור סיסמה באמצעות מחולל הסיסמאות.
מריצים את הפקודה הבאה כדי להגדיר את הלקוח לשימוש באימות אוטומטי (בלי לשנות את הענף):
$ repo init -u https://android.googlesource.com/a/platform/manifest
שימו לב: הקידומת
/a/
בספרייה מפעילה אימות אוטומטי.
הגדרה לשימוש ב-Proxy
אם אתם מורידים קוד מקור מאחורי שרת proxy, כמו שקורה בדרך כלל בסביבות ארגוניות מסוימות, אתם צריכים לציין במפורש שרת proxy לשימוש ב-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 כדי למנוע בעיות בקישוריות
למרות שזה נדיר, לקוחות לינוקס עלולים לחוות בעיות בקישוריות, כמו תקיעה באמצע ההורדות בזמן קבלת אובייקטים. כדי לשפר את המצב, אפשר לשנות את ההגדרות של מחסנית TCP/IP או להשתמש בחיבורים לא מקבילים. כדי לשנות את הגדרת ה-TCP, צריך הרשאת root. כדי לשנות את ההגדרה, מריצים את הפקודות הבאות:
$ 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</code> $ repo sync $ cd /usr/local/aosp/android-latest-release $ repo sync
אפשר לאחסן את המראה בשרת LAN ולגשת אליה דרך NFS, SSH או Git. אפשר גם לאחסן אותו בכונן נשלף ולהעביר את הכונן הזה בין משתמשים או מכונות.
שימוש בשיבוט חלקי
אם אתם משתמשים ב-Git בגרסה 2.19 ואילך, צריך לציין --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 (בעיות בשרת proxy)
יכול להיות שהפקודות repo init
או repo sync
ייכשלו עם שגיאה 403 או 500. ברוב המקרים, השגיאות האלה קשורות לשרתי proxy של HTTP שמתקשים להתמודד עם העברות נתונים גדולות.
אין תיקון ספציפי לשגיאות האלה, אבל לפעמים שימוש בגרסה העדכנית ביותר של Python ושימוש מפורש ב-repo sync -j1
יכולים לעזור.