सिंक करने से जुड़ी समस्याओं का पता लगाना और उन्हें ठीक करना

इस पेज पर, repo sync कमांड से जुड़ी समस्याओं को हल करने का तरीका बताया गया है.

नेटवर्क से जुड़ी समस्याएं हल करना

इस सेक्शन में, नेटवर्क से जुड़ी समस्याओं को ठीक करने के लिए कई सुझाव दिए गए हैं. इन समस्याओं की वजह से, डेटा सिंक नहीं हो पाता है.

कोटा की पाबंदियों से बचने के लिए, पुष्टि करने की सुविधा का इस्तेमाल करना

सर्वर को ज़्यादा इस्तेमाल से बचाने के लिए, सोर्स को ऐक्सेस करने के लिए इस्तेमाल किए जाने वाले हर आईपी पते को एक कोटे से जोड़ा जाता है.

जब किसी आईपी पते को अन्य उपयोगकर्ताओं के साथ शेयर किया जाता है, जैसे कि NAT फ़ायरवॉल के बाहर से सोर्स रिपॉज़िटरी को ऐक्सेस करते समय, सामान्य पैटर्न के लिए कोटा ट्रिगर हो सकते हैं. उदाहरण के लिए, जब कई उपयोगकर्ता एक ही आईपी पते से, कम समय में नए क्लाइंट सिंक करते हैं, तब कोटा ट्रिगर हो सकता है.

कोटे को ट्रिगर होने से रोकने के लिए, पुष्टि किए गए ऐक्सेस का इस्तेमाल किया जा सकता है. यह हर उपयोगकर्ता के लिए अलग कोटा इस्तेमाल करता है, भले ही आईपी पता कुछ भी हो.

पुष्टि किए गए ऐक्सेस की सुविधा चालू करने के लिए:

  1. पासवर्ड जनरेट करने वाले टूल की मदद से पासवर्ड बनाएं.

  2. अपने क्लाइंट को ऑटोमैटिक पुष्टि करने की सुविधा का इस्तेमाल करने के लिए बदलने के लिए, यह कमांड चलाएं (ब्रांच बदले बिना):

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

    ध्यान दें कि /a/ डायरेक्ट्री प्रीफ़िक्स से, पुष्टि अपने-आप ट्रिगर हो जाती है.

प्रॉक्सी के इस्तेमाल के लिए कॉन्फ़िगर करना

अगर आपको प्रॉक्सी के ज़रिए सोर्स डाउनलोड करना है, जैसा कि कुछ कॉर्पोरेट एनवायरमेंट में आम तौर पर होता है, तो पक्का करें कि आपने 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

कनेक्टिविटी से जुड़ी समस्याओं से बचने के लिए, टीसीपी/आईपी सेटिंग में बदलाव करना

हालांकि, ऐसा बहुत कम होता है, लेकिन Linux क्लाइंट को कनेक्टिविटी से जुड़ी समस्याएं आ सकती हैं. जैसे, ऑब्जेक्ट पाने के दौरान डाउनलोड रुक जाना. इस समस्या को ठीक करने के लिए, टीसीपी/आईपी स्टैक की सेटिंग में बदलाव करें या नॉनपैरलल कनेक्शन का इस्तेमाल करें. टीसीपी सेटिंग में बदलाव करने के लिए, आपके पास रूट ऐक्सेस होना चाहिए. सेटिंग में बदलाव करने के लिए, ये निर्देश दें:

$ 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 -b android-latest-release
    $ repo sync
    
  3. मिरर को सर्वर के साथ सिंक करें और क्लाइंट को मिरर के साथ सिंक करें:

    $ cd /usr/local/aosp/mirror</code>
    $ 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 गड़बड़ियों (प्रॉक्सी से जुड़ी समस्याएं) को ठीक करना

repo init या repo sync कमांड, 403 या 500 वाली गड़बड़ी की वजह से काम नहीं कर सकती हैं. ज़्यादातर ये गड़बड़ियां, एचटीटीपी प्रॉक्सी के बड़े डेटा ट्रांसफ़र को मैनेज न कर पाने की वजह से होती हैं.

इन गड़बड़ियों को ठीक करने का कोई खास तरीका नहीं है. हालांकि, Python के नए वर्शन का इस्तेमाल करने और repo sync -j1 का साफ़ तौर पर इस्तेमाल करने से कभी-कभी मदद मिल सकती है.