פתור ותקן בעיות סנכרון

דף זה מסביר כיצד לפתור בעיות ולתקן בעיות הקשורות לפקודת repo sync .

תקן בעיות רשת

סעיף זה מספק מספר הצעות לתיקון בעיות רשת שעלולות לגרום לסנכרון לא מוצלח.

השתמש באימות כדי למנוע מחסומי מכסה

כדי להגן על השרתים מפני שימוש מופרז, כל כתובת IP המשמשת לגישה למקור משויכת למכסה.

בעת שיתוף כתובת IP עם משתמשים אחרים, כגון בעת ​​גישה למאגרי המקור מעבר לחומת אש NAT, מכסות יכולות להפעיל עבור דפוסים רגילים. לדוגמה, מכסה יכולה להפעיל כאשר מספר משתמשים מסנכרנים לקוחות חדשים מאותה כתובת IP, תוך תקופה קצרה.

כדי להימנע מהפעלת מכסות, אתה יכול להשתמש בגישה מאומתת, המשתמשת במכסה נפרדת עבור כל משתמש, ללא קשר לכתובת ה-IP.

כדי לאפשר גישה מאומתת:

  1. צור סיסמה עם מחולל הסיסמאות .

  2. הפעל את הפקודה הבאה כדי להמיר את הלקוח שלך לשימוש באימות אוטומטי (ללא שינוי ענף):

    $ repo init -u https://android.googlesource.com/a/platform/manifest
    

    שים לב שהקידומת /a/ מפעילה אימות אוטומטי.

הגדר לשימוש ב-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. כדי לשנות את ההגדרה, הפק את הפקודות הבאות:

$ sudo sysctl -w net.ipv4.tcp_window_scaling=0
$ repo sync -j1

השתמש במראה מקומית כדי להימנע מהשהייה ברשת

בעת שימוש במספר לקוחות, ניתן ליצור מראה מקומי של כל תוכן השרת ולסנכרן לקוחות מאותה מראה מבלי לגשת לרשת. בצע את ההוראות הבאות כדי ליצור מראה מקומי ב- ~/aosp-mirror/ ולסנכרן לקוחות עם המראה:

  1. צור וסנכרן את המראה:

    $ 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 .

  2. כדי לסנכרן לקוחות מהמראה:

    $ mkdir -p /usr/local/aosp/main
    $ cd /usr/local/aosp/main
    $ repo init -u /usr/local/aosp/mirror/platform/manifest.git
    $ repo sync
    
  3. לבסוף, בצע את הפקודות הבאות כדי לסנכרן את המראה מול השרת ולסנכרן את הלקוח מול המראה:

    $ 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 לפי הצורך.

תקן בעיות סנכרון ספציפיות

דף זה מפרט כמה בעיות ידועות שאתה עשוי להיתקל בהן בעת ​​ניסיון לסנכרן את קוד המקור של אנדרואיד.

פקודות נכשלות עם שגיאת 403 או 500 (בעיות פרוקסי)

הפקודות repo init או repo sync עלולות להיכשל עם שגיאת 403 או 500. לרוב שגיאות אלו קשורות לשרת פרוקסי HTTP שמתקשים להתמודד עם העברות הנתונים הגדולות.

אמנם אין תיקון ספציפי לשגיאות אלו, אך שימוש בגרסת Python העדכנית ביותר ושימוש מפורש repo sync -j1 יכול לפעמים לעזור.