בדף הזה נסביר איך לפתור בעיות שקשורות לנושאים הבאים
הפקודה 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 $ repo sync
לבסוף, פועלים לפי הפקודות הבאות כדי לסנכרן את המראה לעומת השרת ולסנכרן את הלקוח מול המראה:
$ 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 (בעיות בשרת ה-proxy)
הפקודות repo init
או repo sync
עלולות להיכשל עם שגיאה 403 או 500
שגיאה. ברוב המקרים השגיאות האלה קשורות לשרתי proxy ל-HTTP שמתקשים לקבל אותם.
לטפל בהעברות גדולות של נתונים.
אין תיקון ספציפי לשגיאות האלה, אבל נעשה שימוש בגרסה העדכנית ביותר של Python
גרסה ושימוש מפורש ב-repo sync -j1
יכולים לפעמים לעזור.