समन्वयन समस्याओं का निवारण करें और उन्हें ठीक करें

यह पृष्ठ repo sync कमांड से संबंधित समस्याओं का निवारण और समाधान करने का तरीका बताता है।

नेटवर्क समस्याएँ ठीक करें

यह अनुभाग नेटवर्क समस्याओं को ठीक करने के लिए कई सुझाव प्रदान करता है जो असफल सिंक का कारण बन सकते हैं।

कोटा बाधाओं से बचने के लिए प्रमाणीकरण का उपयोग करें

सर्वर को अत्यधिक उपयोग से बचाने के लिए, स्रोत तक पहुंचने के लिए उपयोग किया जाने वाला प्रत्येक आईपी पता एक कोटा से जुड़ा होता है।

अन्य उपयोगकर्ताओं के साथ आईपी पता साझा करते समय, जैसे कि NAT फ़ायरवॉल से परे स्रोत रिपॉजिटरी तक पहुँचते समय, कोटा सामान्य पैटर्न के लिए ट्रिगर हो सकता है। उदाहरण के लिए, कोटा तब ट्रिगर हो सकता है जब कई उपयोगकर्ता एक छोटी अवधि के भीतर एक ही आईपी पते से नए क्लाइंट को सिंक करते हैं।

ट्रिगरिंग कोटा से बचने के लिए, आप प्रमाणित पहुंच का उपयोग कर सकते हैं, जो आईपी पते की परवाह किए बिना प्रत्येक उपयोगकर्ता के लिए एक अलग कोटा का उपयोग करता है।

प्रमाणित पहुंच सक्षम करने के लिए:

  1. पासवर्ड जेनरेटर से एक पासवर्ड बनाएं।

  2. अपने क्लाइंट को स्वचालित प्रमाणीकरण (शाखा बदले बिना) में परिवर्तित करने के लिए निम्नलिखित कमांड चलाएँ:

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

    ध्यान दें कि /a/ निर्देशिका उपसर्ग स्वचालित प्रमाणीकरण को ट्रिगर करता है।

प्रॉक्सी उपयोग के लिए कॉन्फ़िगर करें

यदि आप प्रॉक्सी के पीछे से स्रोत डाउनलोड कर रहे हैं, जैसा कि कुछ कॉर्पोरेट परिवेशों में आम है, तो सुनिश्चित करें कि आपने इन आदेशों को चलाकर रेपो के उपयोग के लिए स्पष्ट रूप से एक प्रॉक्सी निर्दिष्ट किया है:

$ 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

कनेक्टिविटी समस्याओं से बचने के लिए टीसीपी/आईपी सेटिंग्स समायोजित करें

हालांकि यह दुर्लभ है, लिनक्स क्लाइंट कनेक्टिविटी समस्याओं का अनुभव कर सकते हैं, जैसे ऑब्जेक्ट प्राप्त करते समय डाउनलोड के बीच में फंस जाना। इस समस्या को सुधारने के लिए, टीसीपी/आईपी स्टैक की सेटिंग्स समायोजित करें या गैर-समानांतर कनेक्शन का उपयोग करें। टीसीपी सेटिंग को संशोधित करने के लिए आपके पास रूट एक्सेस होना चाहिए। सेटिंग को संशोधित करने के लिए, निम्नलिखित आदेश जारी करें:

$ 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 में एक स्थानीय दर्पण बनाते हैं और repo init कमांड के साथ --mirror ध्वज का उपयोग करके दर्पण को प्रारंभ करते हैं।

  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 या उसके बाद का उपयोग कर रहे हैं, तो किसी भी कम-विलंबता नेटवर्क समस्या को दूर करने के लिए repo init निष्पादित करते समय --partial-clone निर्दिष्ट करें:

  $ repo init -u https://android.googlesource.com/platform/manifest -b main --partial-clone --clone-filter=blob:limit=10M

सब कुछ डाउनलोड करने के लिए रेपो को आरंभ करने के बजाय, यह कमांड Git ऑब्जेक्ट को आवश्यकतानुसार डाउनलोड करता है।

विशिष्ट समन्वयन समस्याओं को ठीक करें

यह पृष्ठ कुछ ज्ञात समस्याओं का विवरण देता है जिनका सामना आप एंड्रॉइड स्रोत कोड को सिंक करने का प्रयास करते समय कर सकते हैं।

आदेश 403 या 500 त्रुटि (प्रॉक्सी समस्याएँ) के साथ विफल हो जाते हैं

repo init या repo sync कमांड 403 या 500 त्रुटि के साथ विफल हो सकते हैं। अक्सर ये त्रुटियां बड़े डेटा ट्रांसफर को संभालने के लिए संघर्ष कर रहे HTTP प्रॉक्सी से संबंधित होती हैं।

हालाँकि इन त्रुटियों का कोई विशिष्ट समाधान नहीं है, लेकिन नवीनतम पायथन संस्करण का उपयोग करना और स्पष्ट रूप से repo sync -j1 उपयोग करना कभी-कभी मदद कर सकता है।