בדף הזה נסביר איך לפתור בעיות שקשורות לנושאים הבאים
הפקודה 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
יכולים לפעמים לעזור.