Ubuntu में पैकेज वर्जन लॉक और डिपेंडेंसी प्रबंधन: apt-mark गाइड

अवलोकन

उत्पादन वातावरण में लिनक्स सर्वर संभालते समय कई बार अनपेक्षित सॉफ्टवेयर अपडेट के कारण सेवाएँ बाधित हो जाती हैं। ऐसे जोखिमों से बचने के लिए महत्वपूर्ण पैकेजों के संस्करण को स्थिर रखना और अतिरिक्त निर्भरताओं (dependencies) को व्यवस्थित करना अत्यंत आवश्यक है। इस व्यावहारिक गाइड में हम apt-mark टूल के जरिए सॉफ्टवेयर वर्जन को होल्ड (hold) करने और ऑटोमैटिक बनाम मैनुअल इंस्टॉलेशन की स्थिति नियंत्रित करने के सुरक्षित तरीके समझेंगे।

सॉफ्टवेयर को अपडेट होने से कैसे रोकें: hold और showhold का उपयोग

प्रयोग शुरू करने के लिए रिपॉजिटरी सूची को रिफ्रेश करते हुए curl टूल इंस्टॉल कर लेते हैं:

sudo apt-get update -qq && sudo apt-get install -y curl

सॉफ्टवेयर रिपॉजिटरी अपडेट और curl इंस्टॉलेशन

जब आप चाहते हैं कि भविष्य में apt upgrade चलाने पर भी कोई विशेष सॉफ्टवेयर अपग्रेड न हो, तो sudo apt-mark hold curl कमांड का इस्तेमाल किया जाता है। यह सिस्टम स्तर पर पैकेज को फ्रीज कर देता है।

⚙️ [महत्वपूर्ण विकल्प संक्षेप में]

hold : पैकेज को मौजूदा स्थिति में लॉक करता है ताकि स्वचालित अपग्रेड रुक सके।
unhold : लगे हुए लॉक को हटाकर सामान्य अपडेट प्रक्रिया को दोबारा सक्रिय करता है।
showhold : वर्तमान में होल्ड पर रखे गए सभी पैकेजों की सूची दिखाता है।
auto : पैकेज को अन्य प्रोग्रामों की स्वचालित निर्भरता के रूप में चिन्हित करता है।
manual : पैकेज को एडमिनिस्ट्रेटर द्वारा सीधे इंस्टॉल किया हुआ दर्ज करता है।
showauto : सिस्टम द्वारा अपने-आप जोड़ी गई निर्भरताओं को सूचीबद्ध करता है।
showmanual : मैन्युअल रूप से जोड़े गए सभी मुख्य पैकेजों को प्रदर्शित करता है।

curl पैकेज को होल्ड स्थिति में डालना

सुरक्षा सुनिश्चित करने के लिए हम जांच सकते हैं कि कौन-से पैकेज अपडेट सूची से बाहर किए गए हैं:

apt-mark showhold

टर्मिनल आउटपुट में curl का नाम दिखाई देना यह पुष्टि करता है कि पैकेज सफलतापूर्वक लॉक हो चुका है।

होल्ड किए गए पैकेजों की सूची देखना

पैकेज अनलॉक करना: unhold के माध्यम से सामान्य अपडेट बहाल करना

यदि परीक्षण समाप्त हो चुका हो या सुरक्षा पैच लागू करने की आवश्यकता हो, तो sudo apt-mark unhold curl चलाकर लॉक हटाया जा सकता है।
कमांड निष्पादित होते ही टर्मिनल पर Canceled hold on curl. संदेश प्राप्त होता है, जिसका अर्थ है कि सामान्य अपग्रेड चक्र फिर से शुरू हो गया है।

curl पैकेज से होल्ड हटाना

सत्यापन के लिए पुन: स्थिति की जांच करें:

apt-mark showhold

इस बार स्क्रीन पर कोई पैकेज प्रदर्शित नहीं होता, जिससे स्पष्ट होता है कि सिस्टम में अब कोई भी अवरुद्ध पैकेज शेष नहीं है।

खाली होल्ड सूची का सत्यापन

इंस्टॉलेशन व्यवहार बदलना: markauto और unmarkauto द्वारा निर्भरता नियंत्रण

पैकेज के आंतरिक फ्लैग्स को समझने के लिए पहले एक छोटा यूटिलिटी टूल jq इंस्टॉल करते हैं:

sudo apt-get install -y jq

jq टूल इंस्टॉल करना

सामान्यतः सीधे इंस्टॉल किए गए पैकेज मैन्युअल माने जाते हैं। sudo apt-mark markauto jq कमांड उस स्थिति को बदलकर पैकेज को ऑटोमैटिक डिपेंडेंसी के रूप में चिन्हित कर देता है। इसका बड़ा लाभ यह है कि जब इससे जुड़ा मूल प्रोग्राम हटेगा, तब apt autoremove चलाने पर यह भी सिस्टम से अपने-आप स्वच्छ हो जाएगा।

पैकेज स्थिति को ऑटोमैटिक में बदलना

यह पुष्टि करने के लिए कि फ्लैग बदल चुका है, निम्नलिखित जांच चलाएँ:

apt-mark showauto jq

परिणाम में jq दिखना बताता है कि यह अब स्वचालित निर्भरता समूह का हिस्सा बन चुका है।

ऑटोमैटिक निर्भरता सूची में jq का सत्यापन

यदि आप चाहते हैं कि किसी अन्य पैकेज के हटने पर भी यह टूल सिस्टम में बना रहे, तो इसे वापस मैन्युअल श्रेणी में लाने के लिए sudo apt-mark unmarkauto jq चलाएँ। इससे यह सुरक्षित हो जाता है और कभी भी autoremove द्वारा हटाया नहीं जाएगा।

स्वचालित स्थिति हटाकर मैन्युअल बनाना

पुनः मैन्युअल सूची की पुष्टि करें:

apt-mark showmanual jq

आउटपुट में jq का नाम आना यह प्रमाणित करता है कि अब यह स्थायी मैनुअल पैकेज के रूप में पंजीकृत है।

मैन्युअल पैकेज सूची में jq की जांच

सिस्टम स्थिति का संपूर्ण विश्लेषण: मैन्युअल और ऑटोमैटिक पैकेजों का ऑडिट

सिस्टम में सीधे उपयोगकर्ता द्वारा सेटअप किए गए प्रमुख पैकेजों की शीर्ष सूची देखने के लिए पाइपलाइन का उपयोग करें:

apt-mark showmanual | head -n 10

यहाँ मूल ओएस घटकों के साथ-साथ आपके द्वारा जोड़े गए उपकरण जैसे curl स्पष्ट रूप से दिखाई देंगे।

शीर्ष 10 मैन्युअल पैकेजों का आउटपुट

इसी प्रकार, पृष्ठभूमि में काम कर रही सहायक लाइब्रेरी और स्वचालित डिपेंडेंसी को देखने के लिए:

apt-mark showauto | head -n 10

यह परिणाम दर्शाता है कि कौन-सी साझा लाइब्रेरी केवल अन्य सॉफ़्टवेयर की आवश्यकता पूरी करने हेतु सक्रिय हैं।

शीर्ष 10 स्वचालित डिपेंडेंसी पैकेजों का विवरण

इस प्रकार apt-mark की सहायता से आप सर्वर पर अनचाहे पैकेज अपग्रेड को समय रहते रोक सकते हैं और सिस्टम की आंतरिक निर्भरताओं को साफ-सुथरा बनाए रख सकते हैं।