בדף הזה מוסבר איך לפתור בעיות שקשורות לפקודה 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 כדי למנוע בעיות בקישוריות
למרות שזה נדיר, יכולות להיות בעיות בקישוריות של לקוחות Linux, למשל שההורדות נתקעות באמצע בזמן קבלת אובייקטים. כדי לשפר את המצב, אפשר לשנות את ההגדרות של מחסנית 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 $ 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 יכולים לעזור.