Ubuntu में dpkg कमांड का संपूर्ण गाइड

सारांश

डेबियन और उबंटू जैसे लिनक्स वितरणों में बैकएंड पैकेज प्रबंधन का आधार dpkg टूल है, जो सीधे तौर पर .deb बाइनरी फ़ाइलों को संचालित करता है। उच्च-स्तरीय टूल जैसे apt के पर्दे के पीछे भी यही कार्य करता है। इस ट्यूटोरियल में हम सॉफ़्टवेयर इंस्टॉलेशन, फ़ाइल मैपिंग, पैकेज कॉन्फ़िगरेशन को पूरी तरह साफ़ करने (purge) और टूटी हुई डिपेंडेंसी को ठीक करने की व्यावहारिक कार्यप्रणाली को गहराई से समझेंगे।

1. अभ्यास हेतु कार्यक्षेत्र सेटअप एवं सिस्टम पैकेज स्थिति की पड़ताल

सुरक्षित परीक्षण वातावरण तैयार करने के लिए एक अलग अस्थायी डायरेक्टरी का निर्माण करके उसमें प्रवेश करते हैं:

mkdir -p /tmp/dpkg-demo && cd /tmp/dpkg-demo

डायरेक्टरी तैयार करें और उसमें जाएं

लाइव सिस्टम में बिना इंस्टॉल किए केवल परीक्षण बाइनरी प्राप्त करने के लिए sl पैकेज की आधिकारिक .deb फ़ाइल रिपॉजिटरी से डाउनलोड करते हैं:

apt-get update -qq && apt-get download -y sl

sl पैकेज डाउनलोड करें

सिस्टम में पंजीकृत सभी अनुप्रयोगों की संक्षिप्त सूची देखने के लिए dpkg -l का उपयोग किया जाता है। आउटपुट की शुरुआत में दिखने वाला ii कोड यह संकेत देता है कि संबंधित पैकेज पूरी तरह इंस्टॉल और चालू स्थिति में है। grep और head के संयोजन से हम आउटपुट को सीमित कर सकते हैं:

⚙️ [अक्सर प्रयुक्त होने वाले प्राथमिक विकल्प]

-i (--install) : लक्षित .deb फ़ाइल को ऑपरेटिंग सिस्टम पर इंस्टॉल करता है।
-r (--remove) : सिस्टम से निष्पादन योग्य फ़ाइलें हटाता है, किंतु कॉन्फ़िगरेशन फ़ाइलों को सुरक्षित रखता है।
-P (--purge) : सभी सेटिंग्स, डेटा और कॉन्फ़िगरेशन सहित संपूर्ण पैकेज को जड़ से मिटा देता है।
-l (--list) : वर्तमान में मौजूद सभी पैकेजों की स्थिति और सूची प्रदर्शित करता है।
-s (--status) : किसी विशिष्ट पैकेज की वर्तमान स्थिति, संस्करण और निर्भरताओं की पड़ताल करता है।
-L (--listfiles) : किसी संस्थापित पैकेज द्वारा सिस्टम में बनाई गई समस्त फ़ाइलों का पथ दिखाता है।
-c (--contents) : बिना इंस्टॉल किए किसी आर्काइव फ़ाइल के अंदर मौजूद आंतरिक संरचना का पूर्वावलोकन करता है।
-I (--info) : अप्रयुक्त .deb पैकेज के मेटाडेटा और नियंत्रण विवरण का विश्लेषण करता है।
--unpack : पैकेज को अनपैक करता है परंतु कॉन्फ़िगरेशन को लंबित रखता है।
--configure : अनपैक हो चुके लेकिन अपूर्ण पैकेजों की सेटअप प्रक्रिया पूर्ण करता है।

इंस्टॉल किए गए पैकेजों की सूची

किसी स्थापित सॉफ़्टवेयर की विस्तृत पृष्ठभूमि जानने के लिए dpkg -s का प्रयोग करें। उदाहरण के लिए, जब आप bash शेल की स्थिति देखते हैं, तो Status: install ok installed पंक्ति इस बात की पुष्टि करती है कि बाइनरी पैकेज सिस्टम पर सही ढंग से सक्रिय है:

पैकेज स्थिति विवरण जांचें

2. पैकेज संरचना का विश्लेषण और dpkg -i के माध्यम से इंस्टॉलेशन

डाउनलोड की गई फ़ाइल वाली डायरेक्टरी में वापस लौटने के लिए निम्नलिखित कमांड चलाएं:

cd /tmp/dpkg-demo

वर्किंग डायरेक्टरी में स्विच करें

पैकेज को इंस्टॉल करने से पहले उसके विकासकर्ता विवरण, वास्तुकला (architecture) तथा आवश्यक निर्भरताओं (Depends) को पढ़ने के लिए dpkg -I अत्यंत उपयोगी है:

पैकेज मेटाडेटा विश्लेषण

फ़ाइल सिस्टम पर पैकेज के संभावित प्रभाव का आकलन करने हेतु dpkg -c चलाकर यह देखा जा सकता है कि निष्पादन योग्य बाइनरी किस पाथ पर जाएगी (जैसे /usr/games/sl):

पैकेज सामग्री का पूर्वावलोकन

पैकेज को सिस्टम पर लागू करने के लिए -i फ्लैग के साथ निष्पादन आरंभ करते हैं। यह प्रक्रिया अनपैकिंग और आवश्यक पोस्ट-इंस्टॉल स्क्रिप्ट्स को निष्पादित करके सॉफ़्टवेयर को चालू करती है:

dpkg -i sl_*.deb

dpkg -i द्वारा इंस्टॉलेशन

सॉफ़्टवेयर की कार्यप्रणाली को सत्यापित करने हेतु संबंधित बाइनरी को टर्मिनल पर चलाकर जांचते हैं:

/usr/games/sl -a || true

इंस्टॉलेशन सत्यापन

3. फ़ाइल पाथ ट्रैकिंग: स्थापित संपत्तियों का स्रोत खोजना

किसी इंस्टॉल किए गए पैकेज ने सिस्टम में कहाँ-कहाँ फ़ाइलें (दस्तावेज़, बाइनरी, मैन्युअल) दर्ज की हैं, यह जानने के लिए -L फ्लैग काम आता है:

dpkg -L sl

संबंधित फ़ाइल सूची की जांच

यदि आपके सामने केवल कोई फ़ाइल पथ मौजूद है और आप यह जानना चाहते हैं कि वह किस पैकेज का हिस्सा है, तो -S फ्लैग से विपरीत खोज (reverse lookup) की जा सकती है:

dpkg -S /usr/games/sl

आउटपुट में sl: /usr/games/sl दिखना यह स्पष्ट करता है कि यह बाइनरी मूलतः sl पैकेज द्वारा स्थापित की गई थी।

फ़ाइल के स्वामी पैकेज की पहचान

सिंबॉलिक लिंक पर रिवर्स लुकअप करते समय ध्यान रखें कि यदि पाथ कैनोनिकल (वास्तविक) नहीं है, तो क्वेरी खाली परिणाम दे सकती है। आधुनिक उबंटू में UsrMerge लेआउट लागू होने के कारण /bin डायरेक्टरी वस्तुतः /usr/bin का लिंक है। अतः सही परिणाम पाने के लिए वास्तविक पथ का प्रयोग आवश्यक है:

dpkg -S /bin/ls

UsrMerge पथ के साथ पैकेज खोजना

4. सॉफ़्टवेयर निष्कासन (Remove बनाम Purge) और टूटी डिपेंडेंसी की मरम्मत

केवल निष्पादन योग्य फ़ाइलों को सिस्टम से हटाने के लिए -r विकल्प चुनें, जिससे भविष्य के लिए सेटिंग्स बरकरार रहती हैं:

dpkg -r sl

पैकेज हटाना (Remove)

यदि आप उस सॉफ़्टवेयर से जुड़े प्रत्येक कॉन्फ़िगरेशन रिकॉर्ड को सिस्टम से हमेशा के लिए साफ़ करना चाहते हैं, तो -P (Purge) का उपयोग करें:

dpkg -P sl

पूर्ण निष्कासन (Purge)

चूंकि dpkg स्वचालित रूप से रिमोट रिपॉजिटरी से डिपेंडेंसी हल नहीं करता, इसलिए यदि इंस्टॉलेशन के दौरान निर्भरता की विफलता आती है, तो apt-get की मरम्मत कमांड चलाकर सिस्टम की पैकेज स्थिति को फिर से स्थिर किया जा सकता है:

apt-get install -f -y

टूटी निर्भरता की मरम्मत

अभ्यास समाप्त होने के बाद बनाए गए अस्थायी कार्यक्षेत्र और फ़ाइलों को साफ़ कर देते हैं:

rm -rf /tmp/dpkg-demo

परीक्षण पर्यावरण की सफ़ाई

इस गाइड में हमने देखा कि कैसे dpkg लिनक्स सिस्टम एडमिनिस्ट्रेटर को स्थानीय पैकेज फाइलों पर प्रत्यक्ष नियंत्रण प्रदान करता है। इन बुनियादी विकल्पों के उचित उपयोग से आप पैकेज ट्रैकिंग, समस्या निवारण और सिस्टम रखरखाव को अधिक सटीकता से संभाल सकते हैं।