সমস্যা সমাধান করুন এবং সিঙ্ক সমস্যার সমাধান করুন

এই পৃষ্ঠায় 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

সংযোগের সমস্যা এড়াতে 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 এ একটি লোকাল মিরর তৈরি করে এবং 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
    $ repo sync
    $ cd /usr/local/aosp/android-latest-release
    $ repo sync
    

মিররটিকে একটি ল্যান সার্ভারে সংরক্ষণ করা এবং NFS, SSH, বা Git-এর মাধ্যমে এটি অ্যাক্সেস করা সম্ভব। এটিকে একটি রিমুভেবল ড্রাইভে সংরক্ষণ করা এবং সেই ড্রাইভটিকে ব্যবহারকারী বা মেশিনগুলোর মধ্যে হস্তান্তর করাও সম্ভব।

একটি আংশিক ক্লোন ব্যবহার করুন

আপনি যদি গিট সংস্করণ ২.১৯ বা তার পরবর্তী সংস্করণ ব্যবহার করেন, তাহলে যেকোনো লো-ল্যাটেন্সি নেটওয়ার্ক সমস্যা এড়াতে repo init করার সময় --partial-clone নির্দিষ্ট করুন:

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

সবকিছু ডাউনলোড করার জন্য রিপো ইনিশিয়ালাইজ করার পরিবর্তে, এই কমান্ডটি প্রয়োজন অনুযায়ী গিট অবজেক্টগুলো ডাউনলোড করে।

403 বা 500 ত্রুটির সমাধান করুন (প্রক্সি সংক্রান্ত সমস্যা)

repo init বা repo sync কমান্ডগুলো 403 অথবা 500 এরর দিয়ে ব্যর্থ হতে পারে। বেশিরভাগ ক্ষেত্রেই এই এররগুলো ঘটে থাকে যখন HTTP প্রক্সিগুলো বিপুল পরিমাণ ডেটা ট্রান্সফার সামলাতে হিমশিম খায়।

যদিও এই ত্রুটিগুলির কোনো নির্দিষ্ট সমাধান নেই, তবে পাইথনের সর্বশেষ সংস্করণ ব্যবহার করলে এবং স্পষ্টভাবে repo sync -j1 ব্যবহার করলে কখনও কখনও সাহায্য হতে পারে।