প্রক্রিয়াটির আরও বিশদ বিবরণ এখানে। দুঃখিত পাঠ্যটি এত দিন পেল।
আমার অভিজ্ঞতা দেবিয়ান থেকে এসেছে, যার জন্য উবুন্টুতে ব্যবহৃত পুরো প্যাকেজিং এবং আপগ্রেড সিস্টেমটি মূলত উদ্ভাবিত হয়েছিল। দৈনিক উবুন্টু সুরক্ষা আপগ্রেডগুলি চলার সাথে সম্পর্কিত apt-get upgrade
যা সাধারণত কোনও সফ্টওয়্যার অপসারণ করে না। বড় রিলিজ আপগ্রেডগুলির সাথে সামঞ্জস্য apt-get dist-upgrade
হয় যা সফ্টওয়্যার প্যাকেজগুলি সম্পূর্ণরূপে বিনিময় করা যায়।
আসলে খুব নিম্ন স্তরের উপাদানগুলি সাধারণত একটি রিলিজ আপগ্রেডের সময় বিনিময় হয় না। আপগ্রেড করার সাথে সাথেই আপনার / বুট ডিরেক্টরিতে দুটি কার্নেল এবং initrd চিত্র পাওয়া উচিত images এটি কারণ প্রোগ্রামগুলির বিপরীতে কার্নেলের উপাদানগুলি এত সুন্দরভাবে আদান-প্রদানযোগ্য নয়। যদি আপগ্রেড করার সময় নতুন ডিভাইস ড্রাইভার লোড করার প্রয়োজন দেখা দেয় তবে এগুলি চলমান কার্নেলের সাথে সামঞ্জস্যপূর্ণ হতে হবে। সিস্টেমটি নতুন কার্নেল দিয়ে বুট করার পরে, পুরানোটি সরিয়ে ফেলা যাবে। গতবার আমি এই একটি জিনিসটি ম্যানুয়ালি করতে হয়েছিল তা যাচাই করেছিলাম, বর্তমান আপডেটেটর কীভাবে এটি পরিচালনা করে তা আমি জানি না। এটি বিটিডাব্লু মূল কারণ, কার্নেল চিত্রটি ফাইলের সংস্করণ নম্বরটি কেন বহন করে - তাই আপনার একই সময়ে বিভিন্ন কার্নেল সংস্করণ ইনস্টল থাকতে পারে। মডিউল পাথের জন্য একই (/ lib / মডিউল / ...)
সফ্টওয়্যার প্যাকেজগুলি একের পর এক আপগ্রেড করা হয়, নির্ভরতা পর্বতমালার সর্বনিম্ন প্যাকেজগুলির সাথে শুরু করে। এগুলি সাধারণত libc এবং অন্যান্যগুলির মতো প্রোগ্রাম লাইব্রেরি হয়। প্যাকেজগুলি আপডেট করা হয় এমন ক্রমটি হার্ডকডযুক্ত না হলেও প্যাকেজ নির্ভরতাগুলি সমাধান হওয়ার কারণে গতিশীলভাবে গণনা করা হয়। বেশিরভাগ ক্ষেত্রে পুরানো প্রোগ্রামগুলি নতুন লাইব্রেরিগুলির সাথে কাজ করতে পারে, সুতরাং যদি সেই লাইব্রেরিগুলি প্রথমে প্রতিস্থাপন করা হয় তবে সমস্যা হয় না matic
আপনাকে এখানে বুঝতে হবে যে সিস্টেমটি ম্যানুয়ালি ইনস্টল করা প্যাকেজগুলির মধ্যে পার্থক্য করে (যেমন প্যাকেজগুলি যা আপনি সরাসরি নিজেকে অনুরোধ করেছিলেন, অর্থাৎ ক্রোমিয়াম) এবং স্বয়ংক্রিয়ভাবে ইনস্টল হওয়া প্যাকেজ, যেখানে কেবল ইনস্টল হওয়া প্যাকেজগুলির নির্ভরতা পূরণ করতে ইনস্টল করা হয়েছে (এবং সেই নির্ভরতার নির্ভরতাগুলি )।
প্রতিটি ম্যানুয়ালি ইনস্টল করা প্রোগ্রামের জন্য, আপডেটেটর কেবল একটি নতুন সংস্করণ সন্ধান করে। প্রায়শই এই প্রোগ্রামগুলি হ'ল "উবুন্টু-ডেস্কটপ" এর মতো কেবল মেটা প্যাকেজ হয়, এতে কোনও ডেটা থাকে না এবং কেবল নির্ভরতা থাকে। নির্ভরযোগ্য লাইব্রেরিগুলির নতুন সংস্করণগুলিতে টান দেওয়া হবে, কারণ তারা সরাসরি আপডেট (ম্যানুয়ালি অনুরোধ করা) প্রোগ্রাম দ্বারা অনুরোধ করা হয়। আপডেটেটর সর্বদা চেষ্টা করবে যে কোনও নির্ভরশীল প্যাকেজের নতুন ব্যবহারযোগ্য সংস্করণটি ইনস্টল করার চেষ্টা করবে (কোনও আপগ্রেড চলাকালীন কেবল আপগ্রেডগুলি প্রকাশ করে না)।
নতুন লাইব্রেরি সংস্করণগুলির সাথে কাজ করতে পারে না এমন প্রোগ্রামগুলি গ্রন্থাগারটি আপগ্রেড করার পরে এবং প্রোগ্রামটি নিজেই আপগ্রেড হওয়ার আগে শুরু করা যায় না। যদি সেই প্রোগ্রামগুলি লাইব্রেরি আপগ্রেড হওয়ার আগেই চলতে থাকে তবে এগুলি চলতে থাকবে, কারণ পুরানো গ্রন্থাগার সংস্করণ যতক্ষণ ব্যবহারে থাকবে ততক্ষণ স্মৃতিতে থাকবে। একইভাবে প্রোগ্রামগুলি আপগ্রেড হওয়ার আগেই শুরু হয়েছিল started এগুলি শেষ এবং পুনরায় চালু না হওয়া পর্যন্ত নতুন বৈশিষ্ট্যগুলি সরবরাহ করবে না।
আপডেটের পরে কিছু গ্রন্থাগার (বা সাধারণভাবে নির্ভরতা) অনাথ হবে। সেগুলি গ্রন্থাগারগুলি যা পুরানো প্রোগ্রাম সংস্করণগুলির দ্বারা প্রয়োজনীয় ছিল, তবে নতুন সংস্করণগুলির দ্বারা আর প্রয়োজন হয় না। যেহেতু এই প্যাকেজগুলি স্বয়ংক্রিয়ভাবে ইনস্টল হিসাবে চিহ্নিত করা হয়েছে এবং যেহেতু কোনও ম্যানুয়ালি ইনস্টল করা প্রোগ্রাম তাদের সাথে আর সম্পর্কিত নয় তাই এই প্যাকেজগুলি সহজেই সনাক্ত করা যায় এবং সরানো যায়। আপনি এটি আপডেট প্রক্রিয়ার শেষ ধাপ হিসাবেও পর্যবেক্ষণ করতে পারেন (আপডেটেটর সাইজ "অপ্রচলিত প্যাকেজ অপসারণ" বা এর অনুরূপ কিছু)।
কিছু প্যাকেজ ইনস্টল করা হবে, যেখানে আগে ইনস্টল করা হয়নি, সেগুলি কেবলমাত্র নতুন নির্ভরতা, যা স্বয়ংক্রিয়ভাবে ইনস্টল হওয়া হিসাবে চিহ্নিত করা হয় এবং মুছে ফেলা যেতে পারে, যদি ভবিষ্যতে তাদের প্রয়োজনীয়তা অদৃশ্য হয়ে যায়।
এমনকি এই প্রক্রিয়াটি পুরো ব্যবহারকারীর প্রোগ্রামের বিনিময়ের অনুমতি দেয়। উদাহরণস্বরূপ যেমন জিনোম 2 থেকে ইউনিটিতে স্যুইচ করা। যেহেতু উভয়ই কেবল উবুন্টু-ডেস্কটপের স্বয়ংক্রিয় নির্ভরতা, যা কয়েকটি প্যাকেজের মধ্যে একটি, যার জন্য নতুন সংস্করণটি প্রথম স্থানে অনুরোধ করা হয়।
প্রোগ্রামগুলি সাধারণত ওএস কার্নেলের একটি নির্দিষ্ট সংস্করণের উপর নির্ভর করে না, তাই তারা চলমান কার্নেলের সাথে সাধারণত কাজ করবে।
এই সমস্তটি বাদে আমার সন্দেহ হয় যে উবুন্টু আপডেটারটি এই তত্ত্বটি যেখানে ভেঙে পড়েছে সেই পরিস্থিতিতে বাধা দেওয়ার জন্য কিছু নির্দিষ্ট সমাধান এবং কাজকর্ম মিশ্রণে ফেলে দেয়।
আপনি আপডেটের সময় দেখতে পাচ্ছেন যে খুব ভাল অবস্থার মধ্যে রয়েছে সিস্টেমটি কেবল সীমিত অংশের জন্য ব্যবহারযোগ্য। আপডেটের সময় যদি কিছু ভুল হয়ে যায় তবে সম্ভবত আপনি একটি ভাঙা সিস্টেমের সাথেই চলে যাবেন । প্রায়শই এমন একটি এমনকি সহজে মেরামত করা যায় না, যেহেতু আপগ্রেড প্রোগ্রামটিও প্রভাবিত হতে পারে। মনে রাখবেন, ভাঙ্গা নির্ভরতা সহ প্রোগ্রামগুলি চলতে পারে, তবে পুনরায় আরম্ভ করা হবে না, যতক্ষণ নির্ভরতা ভেঙে যায়, এটি আপডেটারের ক্ষেত্রেও যায়।
কমান্ড লাইন প্রোগ্রামটি ব্যবহার করে apt-mark
কোন প্যাকেজগুলি ম্যানুয়ালি ইনস্টল করা হয়েছে এবং কোনটি স্বয়ংক্রিয়ভাবে ইনস্টল হয়েছে তা অনুসন্ধান করতে পারেন। আপনি একই প্রোগ্রামটি ব্যবহার করে সেই চিহ্নগুলি স্যুইচ করতে পারেন। এটি সরাসরি আপডেট প্রক্রিয়াটিকে প্রভাবিত করবে।
আরও জটিল সফ্টওয়্যার সেটআপে আপডেটার কখনও কখনও আপনাকে ম্যানুয়ালি নির্ভরতার সমাধান করতে বলবে। অর্থাৎ যখন কোনও ম্যানুয়ালি ইনস্টল করা প্রোগ্রাম আপডেট হয়ে যায় এবং একটি লাইব্রেরির নতুন সংস্করণের জন্য অনুরোধ করে যখন অন্য একটি ম্যানুয়ালি ইনস্টল করা প্রোগ্রাম একই লাইব্রেরির পুরানো সংস্করণের উপর নির্ভর করে এবং নতুনটির সাথে কাজ করতে পারে না। এরপরে আপনাকে নিজের পছন্দটি বেছে নিতে হবে, হয় সেই প্রোগ্রামগুলির মধ্যে একটি ত্যাগ করতে হবে বা উভয়কেই আপগ্রেড করা থেকে বিরত থাকতে হবে। যেহেতু নির্ভরতাগুলি প্রায়শই জটিল হয় এটি খুব অগোছালো খুব দ্রুত পেতে পারে (আপনি "নির্ভরতা নরক" শব্দটি শুনে থাকতে পারেন)।
এখন নির্দিষ্ট প্রশ্নের জন্য:
- যখন নিম্ন-স্তরের অবকাঠামো পরিবর্তন করা হয় (কার্নেলের মতো নিম্ন-স্তরের, ড্রাইভার, লাইব্রেরি ইত্যাদির সাথে ব্যবহারকারীর সরাসরি যোগাযোগ হয় না), অবহেলিত বাইনারিগুলির কী ঘটে?
- ঠিক আছে ... আমি ইতিমধ্যে এটি আবরণ
- সম্পূর্ণরূপে অবমূল্যায়ন করা এমন কোনও অ্যাপ্লিকেশনটির কী হবে? উদাহরণস্বরূপ, ইউনিটি 2 ডি (বা অন্য কোনও সফ্টওয়্যার পরিত্যাক্ত / কোনও রক্ষণাবেক্ষণকারী নেই যার প্যাকেজ নতুন রেপোতে নেই)।
- যদি অ্যাপটি একবার ম্যানুয়ালি ইনস্টল করা হয়ে থাকে তবে এটি সিস্টেমে থাকবে, প্রায়শই আমি বর্ণিত নির্ভরতা নরকের কারণ হয়ে দাঁড়ায়।
- উবুন্টু-ডেস্কটপ একটি মেটাপ্যাকেজ যা ডিফল্ট উবুন্টু অ্যাপ্লিকেশনগুলিকে নির্ভরতা হিসাবে টেনে নেয়। যদি আমি ফায়ারফক্স মুছে ফেলে এবং ক্রোম ইনস্টল করি তবে ফায়ারফক্স কি আপগ্রেডের অংশ হিসাবে টানবে?
- যতক্ষণ না এটি নতুন রিলিজের স্ট্যান্ডার্ড ব্রাউজার, হ্যাঁ। ক্রোমিয়ামও আপগ্রেড করা হবে। আপনি উবুন্টু-ডেস্কটপ না সরিয়ে ফায়ারফক্স মুছে ফেলতে পারবেন কিনা তা নিশ্চিত নই। মনে রাখবেন যে কঠোর নির্ভরতা ছাড়াও, প্যাকেজ সিস্টেমটি সুপারিশগুলির ধারণাটিও জানে, যেখানে একটি সফ্টওয়্যার সাধারণত নির্ভরতার মতো ইনস্টল করা হবে তবে এটির নিজস্ব একমাত্র নির্ভরতা ব্যতীত অন্য কোনও কিছুকে প্রভাবিত না করে পরে আনইনস্টল করা যায়।
- তদুপরি, যদি কোনও একক অ্যাপ্লিকেশন প্যাকেজ-এক্স উপর নির্ভর করতে ব্যবহৃত হয় এবং নতুন রিলিজে আর না করে তবে কি হবে; অনাথ হওয়া সত্ত্বেও প্যাকেজ-এক্স কি অন্যান্য প্যাকেজগুলির পাশাপাশি আপগ্রেড করা হবে?
আপনার যদি এখনও আরও কিছু প্রশ্ন থাকে তবে আমাকে জিজ্ঞাসা করুন।