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

এই পৃষ্ঠাটি ব্যাখ্যা করে যে কীভাবে repo sync কমান্ডের সাথে সম্পর্কিত সমস্যাগুলি সমাধান এবং সমাধান করতে হয়।

নেটওয়ার্ক সমস্যা ঠিক করুন

এই বিভাগটি নেটওয়ার্ক সমস্যা সমাধানের জন্য বিভিন্ন পরামর্শ প্রদান করে যা অসফল সিঙ্কের কারণ হতে পারে।

কোটা বাধা এড়াতে প্রমাণীকরণ ব্যবহার করুন

সার্ভারগুলিকে অত্যধিক ব্যবহারের বিরুদ্ধে রক্ষা করার জন্য, উত্স অ্যাক্সেস করতে ব্যবহৃত প্রতিটি আইপি ঠিকানা একটি কোটার সাথে যুক্ত।

অন্যান্য ব্যবহারকারীদের সাথে একটি IP ঠিকানা ভাগ করার সময়, যেমন NAT ফায়ারওয়ালের বাইরে থেকে উত্স সংগ্রহস্থলগুলি অ্যাক্সেস করার সময়, কোটাগুলি স্বাভাবিক নিদর্শনগুলির জন্য ট্রিগার করতে পারে। উদাহরণস্বরূপ, একটি কোটা ট্রিগার হতে পারে যখন অনেক ব্যবহারকারী একই IP ঠিকানা থেকে অল্প সময়ের মধ্যে নতুন ক্লায়েন্ট সিঙ্ক করে।

কোটা ট্রিগার করা এড়াতে, আপনি প্রমাণীকৃত অ্যাক্সেস ব্যবহার করতে পারেন, যা IP ঠিকানা নির্বিশেষে প্রতিটি ব্যবহারকারীর জন্য একটি পৃথক কোটা ব্যবহার করে।

প্রমাণীকৃত অ্যাক্সেস সক্ষম করতে:

  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
    $ repo sync
    
  3. অবশেষে, সার্ভারের বিরুদ্ধে মিরর সিঙ্ক করতে এবং মিররের বিরুদ্ধে ক্লায়েন্টকে সিঙ্ক করতে এই কমান্ডগুলি অনুসরণ করুন:

    $ cd /usr/local/aosp/mirror</code>
    $ repo sync
    $ cd /usr/local/aosp/main
    $ repo sync
    

একটি LAN সার্ভারে আয়না সংরক্ষণ করা এবং NFS, SSH, বা 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

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

নির্দিষ্ট সিঙ্ক সমস্যা সমাধান করুন

এই পৃষ্ঠাটি Android সোর্স কোড সিঙ্ক করার চেষ্টা করার সময় আপনার সম্মুখীন হতে পারে এমন কিছু পরিচিত সমস্যার বিবরণ রয়েছে৷

কমান্ড 403 বা 500 ত্রুটির সাথে ব্যর্থ হয় (প্রক্সি সমস্যা)

repo init বা repo sync কমান্ড 403 বা 500 ত্রুটির সাথে ব্যর্থ হতে পারে। প্রায়শই এই ত্রুটিগুলি HTTP প্রক্সিগুলির সাথে সম্পর্কিত যেগুলি বড় ডেটা স্থানান্তর পরিচালনা করতে লড়াই করে৷

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