यहां प्रक्रिया का अधिक विस्तृत विवरण दिया गया है। क्षमा करें कि पाठ इतना लंबा हो गया।
मेरा अनुभव डेबियन से उपजा है, जिसके लिए मूल रूप से उबंटू में उपयोग की जाने वाली पूरी पैकेजिंग और उन्नयन प्रणाली का आविष्कार किया गया था। दैनिक उबंटू सुरक्षा उन्नयन चल रहा है apt-get upgrade
जो सामान्य रूप से किसी भी सॉफ्टवेयर को नहीं हटाता है। बड़े रिलीज अपग्रेड एक ऐसे apt-get dist-upgrade
सॉफ्टवेयर से मेल खाते हैं जिसके दौरान सॉफ्टवेयर पैकेज का पूरी तरह से आदान-प्रदान किया जा सकता है।
वास्तव में रिलीज के उन्नयन के दौरान बहुत कम स्तर के घटकों का आम तौर पर आदान-प्रदान नहीं किया जाता है। अपग्रेड के तुरंत बाद आपको अपनी बूट निर्देशिका में दो कर्नेल और initrd छवियां मिलनी चाहिए। ऐसा इसलिए है क्योंकि प्रोग्राम के विपरीत कर्नेल घटक विनिमेय नहीं हैं। यदि नवीनीकरण के दौरान नए डिवाइस ड्राइवरों को लोड करने की आवश्यकता होती है, तो उन्हें चलने वाले कर्नेल के साथ संगत होना चाहिए। नए कर्नेल के साथ सिस्टम बूट होने के बाद, पुराने को हटाया जा सकता है। पिछली बार जब मैंने यह जाँच की थी कि एक चीज़ को मैन्युअल रूप से किया जाना था, मुझे नहीं पता कि वर्तमान अपडेटर इसे कैसे संभालता है। यह बीटीडब्लू है। मुख्य कारण, कर्नेल छवि फ़ाइल नाम में अपना संस्करण संख्या क्यों रखती है - इसलिए आपके पास एक ही समय में विभिन्न कर्नेल संस्करण स्थापित हो सकते हैं। मॉड्यूल पथ (/ lib / मॉड्यूल / ...) के लिए समान
सॉफ्टवेयर पैकेज एक-एक करके अपग्रेड होते हैं, जो डिपेंडेंसी हिरार्की में सबसे कम पैकेज के साथ शुरू होते हैं। वे आम तौर पर प्रोग्राम लाइब्रेरी हैं जैसे कि libc और अन्य। जिस क्रम में पैकेज अपडेट किए जाते हैं, वह हालांकि हार्डकोडेड नहीं है, लेकिन पैकेज की निर्भरता के रूप में गतिशील रूप से गणना की जाती है। ज्यादातर मामलों में पुराने कार्यक्रम नई लाइब्रेरी के साथ काम कर सकते हैं, इसलिए यह समस्याग्रस्त नहीं है अगर उन लाइब्रेरी को पहले स्थान दिया जाए।
आपको यहां समझना होगा, कि सिस्टम मैन्युअल रूप से स्थापित पैकेजों (यानी जो पैकेज आपने सीधे खुद से अनुरोध किया है, क्रोमियम) और स्वचालित रूप से स्थापित पैकेजों के बीच अंतर करता है, जहां केवल मैन्युअल रूप से इंस्टॉल किए गए पैकेजों की निर्भरता को पूरा करने के लिए स्थापित किया गया है (और उन निर्भरता की निर्भरता। )।
प्रत्येक मैन्युअल रूप से इंस्टॉल किए गए प्रोग्राम के लिए, अपडेटर सिर्फ एक नए संस्करण की तलाश करता है। अक्सर वे प्रोग्राम "मेटा-डेस्कटॉप" जैसे मेटा पैकेज होते हैं, जिसमें कोई डेटा नहीं होता है, और सिर्फ निर्भरता होती है। आश्रित पुस्तकालयों के नए संस्करणों को अंदर खींचा जाएगा, क्योंकि वे सीधे अपडेट किए गए (मैन्युअल रूप से अनुरोध किए गए) कार्यक्रमों द्वारा अनुरोध किए जाते हैं। अपडेटर हमेशा किसी भी आश्रित पैकेज के नवीनतम प्रयोग करने योग्य संस्करण को स्थापित करने का प्रयास करेगा (किसी भी अपग्रेड के दौरान न केवल अपग्रेड जारी करेगा)।
लाइब्रेरी के अपग्रेड होने के बाद, नए लाइब्रेरी वर्जन के साथ काम करने वाले प्रोग्राम को समय के दौरान शुरू नहीं किया जा सकता है, और प्रोग्राम से पहले ही अपग्रेड किया जाता है। यदि वे प्रोग्राम पहले से ही लाइब्रेरी अपग्रेड से पहले चल रहे हैं, लेकिन फिर भी वे चलते रहेंगे, क्योंकि पुराना लाइब्रेरी वर्जन तब तक मेमोरी में रहता है, जब तक वह उपयोग में रहता है। समान उन कार्यक्रमों के लिए जाता है जो अपग्रेड होने से पहले शुरू किए गए थे। वे तब तक नई सुविधाएँ प्रदान नहीं करेंगे जब तक कि उन्हें समाप्त और पुनः आरंभ नहीं किया जाता है।
अद्यतन के बाद कुछ पुस्तकालय (या सामान्य रूप से निर्भरता) अनाथ हो जाएंगे। वे पुस्तकालय हैं जो पुराने प्रोग्राम संस्करणों द्वारा आवश्यक थे, लेकिन अब नए संस्करणों की आवश्यकता नहीं है। चूंकि इन पैकेजों को स्वचालित रूप से स्थापित किया गया है, और चूंकि कोई भी मैन्युअल रूप से इंस्टॉल किया गया प्राग्राम उनसे संबंधित नहीं है, इसलिए ये पैकेज आसानी से स्थित और निकाले जा सकते हैं। आप इसे अपडेट प्रक्रिया के अंतिम चरण के रूप में भी देख सकते हैं (अपडेटर सेस "अप्रचलित पैकेजों को हटाने" या कुछ इसी तरह का)।
कुछ पैकेज स्थापित किए जाएंगे, जो पहले स्थापित नहीं थे, वे बस नई निर्भरताएं हैं, जो स्वचालित रूप से स्थापित के रूप में चिह्नित हैं, और उन्हें हटाया जा सकता है, भविष्य में उनके लिए आवश्यकता गायब हो जानी चाहिए।
यह तंत्र पूरे उपयोगकर्ता कार्यक्रमों के आदान-प्रदान की अनुमति भी देता है। उदाहरण के लिए Gnome2 से एकता पर स्विच करना। चूँकि दोनों ही ubuntu-desktop की स्वचालित निर्भरताएँ हैं, जो कि कुछ पैकेजों में से एक है, जिसके लिए नए संस्करणों को वास्तव में पहली जगह के लिए अनुरोध किया जाता है।
प्रोग्राम आमतौर पर ओएस कर्नेल के एक विशिष्ट संस्करण पर निर्भर नहीं करते हैं, इसलिए वे सामान्य रूप से चलने वाले कर्नेल के साथ ठीक काम करेंगे।
इन सबके अलावा, मुझे संदेह है कि उबंटू अपडैटर उन कुछ विशिष्ट सुधारों और मिक्सचर में वर्कअराउंड को फेंक देता है, जहां यह सिद्धांत टूट जाता है।
जैसा कि आप अद्यतन के दौरान देख सकते हैं कि बहुत अच्छी तरह से स्थितियाँ हैं जिसमें सिस्टम केवल एक सीमित भाग के लिए उपयोग करने योग्य है। चाहिए कुछ अद्यतन के दौरान गलत होगा सबसे अधिक संभावना एक टूट प्रणाली के साथ नहीं छोड़ा जा सकता। अक्सर यहां तक कि आसानी से मरम्मत नहीं की जा सकती है, क्योंकि उन्नयन कार्यक्रम भी प्रभावित हो सकता है। याद रखें, टूटी हुई निर्भरता के साथ कार्यक्रम कार्य करना जारी रख सकते हैं, लेकिन फिर से शुरू नहीं किया जा सकता है, जब तक निर्भरताएं टूट जाती हैं, यह अद्यतनकर्ता के लिए भी जाता है।
आप कमांड लाइन प्रोग्राम apt-mark
का उपयोग यह पता लगाने के लिए कर सकते हैं कि कौन से पैकेज मैन्युअल रूप से इंस्टॉल किए गए हैं और जो स्वचालित रूप से इंस्टॉल किए गए हैं। आप उसी प्रोग्राम का उपयोग करके उन निशानों को भी स्विच कर सकते हैं। यह सीधे अपडेट प्रक्रिया को प्रभावित करेगा।
अधिक जटिल सॉफ़्टवेयर सेटअप में अपडेटर कभी-कभी आपसे मैन्युअल रूप से एक निर्भरता को हल करने के लिए कहेगा। यानी जब कोई मैन्युअल रूप से इंस्टॉल किया गया प्रोग्राम अपडेट हो जाता है और लाइब्रेरी के एक नए संस्करण का अनुरोध करता है जबकि एक अन्य मैन्युअल रूप से इंस्टॉल किया गया प्रोग्राम उसी लाइब्रेरी के पुराने संस्करण पर निर्भर करता है और नए के साथ काम नहीं कर सकता है। फिर आपको अपनी पसंद बनानी होगी, या तो उन कार्यक्रमों में से एक को त्यागना होगा या दोनों को अपग्रेड करने से बचना होगा। चूँकि निर्भरताएँ अक्सर जटिल होती हैं इसलिए यह बहुत तेज़ी से गड़बड़ हो सकती है (आपने "निर्भरता नरक" शब्द के बारे में सुना होगा)।
अब विशिष्ट प्रश्नों के लिए:
- जब निम्न-स्तरीय अवसंरचना को बदल दिया जाता है (कर्नेल, ड्राइवरों, पुस्तकालयों, आदि में निम्न-स्तर कुछ भी जो उपयोगकर्ता के साथ सीधे संपर्क नहीं करता है), तो पदावनत बायनेरिज़ का क्या होता है?
- ठीक है ... मैं पहले से ही इस एक को कवर किया
- उस ऐप का क्या होता है जिसे पूरी तरह से अपदस्थ किया गया है? उदाहरण के लिए, यूनिटी 2 डी (या किसी भी अन्य सॉफ़्टवेयर को छोड़ दिया गया / कोई अनुरक्षक नहीं है जिसका पैकेज नए रेपो में नहीं है)।
- यदि ऐप को एक बार मैन्युअल रूप से इंस्टॉल किया गया था, तो यह सिस्टम में बना रहेगा, अक्सर मेरे द्वारा वर्णित निर्भरता नरक का कारण बनता है।
- ubuntu- डेस्कटॉप एक रूपक है जो निर्भरता के रूप में डिफ़ॉल्ट उबंटू अनुप्रयोगों को खींचता है। अगर मैंने फ़ायरफ़ॉक्स को हटा दिया और क्रोम स्थापित किया, तो क्या फ़ायरफ़ॉक्स अभी भी उन्नयन के हिस्से के रूप में खींच लिया जाएगा?
- जब तक यह नई रिलीज़ का मानक ब्राउज़र है, हाँ। क्रोमियम को भी अपग्रेड किया जाएगा। मुझे यकीन नहीं है कि आप ubuntu-desktop को हटाए बिना फ़ायरफ़ॉक्स को हटा सकते हैं। ध्यान दें कि सख्त निर्भरता के अलावा, पैकेज सिस्टम भी सिफारिशों की अवधारणा को जानता है, जहां एक सॉफ्टवेयर सामान्य रूप से एक निर्भरता की तरह स्थापित किया जाएगा, लेकिन बाद में बिना किसी अन्य चीज को प्रभावित किए बिना ही इसकी स्थापना की जा सकती है।
- इसके अलावा, क्या होता है अगर एक भी ऐप पैकेज-एक्स पर निर्भर करता था और अब नई रिलीज में ऐसा नहीं करता है; क्या पैकेज-एक्स को अनाथ होने के बावजूद बाकी पैकेजों के साथ अपग्रेड किया जाएगा?
बस मुझसे पूछें कि क्या आपके पास अभी भी कोई सवाल है।