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

इस पेज पर, 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

नेटवर्क के इंतज़ार से बचने के लिए, लोकल मिरर का इस्तेमाल करना

कई क्लाइंट का इस्तेमाल करते समय, पूरे सर्वर के कॉन्टेंट का लोकल मिरर बनाया जा सकता है. साथ ही, नेटवर्क को ऐक्सेस किए बिना उस मिरर से क्लाइंट को सिंक किया जा सकता है. at ~/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 या उसके बाद के वर्शन का इस्तेमाल किया जा रहा है, तो --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 गड़बड़ी के साथ काम नहीं करते (प्रॉक्सी से जुड़ी समस्याएं)

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

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