काफी समय, उबंटू में कमांड लाइन ( apt-get या apt का उपयोग करके) से पैकेज को स्थापित / अपडेट करते समय, हमें यह त्रुटि मिलती है: ई: प्रशासन निर्देशिका को लॉक करने में असमर्थ (/ var / lib / dpkg /) । शुरुआती दृष्टिकोण से, यह एक जटिल त्रुटि है, क्योंकि नए उपयोगकर्ता अधिकतर "/ var / lib / dpkg /" निर्देशिका के बारे में अवगत नहीं हैं और वर्तमान ऑपरेशन के साथ उन्हें क्या करना है।

तकनीकी रूप से, सिस्टम को कई परिदृश्यों में सिस्टम द्वारा फेंक दिया जाता है, और वास्तव में इस समस्या को हल करने के बारे में सावधानी बरतनी चाहिए। इस लेख में हम इस त्रुटि से संबंधित इन सभी पहलुओं पर चर्चा करेंगे और आप इससे कैसे सुरक्षित रूप से छुटकारा पा सकते हैं।

लॉक करने में असमर्थ (/ var / lib / dpkg /) - समस्या का निदान

जब भी आपको यह त्रुटि आती है, तो पहले चरण को त्रुटि विवरण को ध्यान से पढ़ना चाहिए। इसमें आमतौर पर कुछ महत्वपूर्ण और समय बचाने वाले संकेत होते हैं। उदाहरण के तौर पर, निम्नलिखित स्क्रीनशॉट समान दिखने वाली त्रुटियों को फेंकने के लिए "apt-get install" कमांड दिखाते हैं।

हालांकि, यदि आप एक नजदीकी नजर रखते हैं, तो आप देखेंगे कि पहली पंक्ति में ब्रैकेट के भीतर पाठ और दूसरी पंक्ति में कॉमा के बाद पाठ दोनों परिदृश्यों में भिन्न है जिससे यह स्पष्ट हो जाता है कि पहले परिदृश्य में त्रुटि के लिए कुछ है उपयोगकर्ता अनुमतियों के साथ करें, जबकि दूसरे परिदृश्य में यह लॉक फ़ाइल से अस्थायी रूप से अनुपलब्ध है।

यदि आपको अनुमति-संबंधी त्रुटि का सामना करना पड़ रहा है (जैसा उपर्युक्त पहली छवि में दिखाया गया है), तो यह सबसे अधिक संभावना है क्योंकि "apt-get" या "apt" कमांड चलाने वाले उपयोगकर्ता के पास पर्याप्त विशेषाधिकार नहीं हैं और आदेश बिना चलाया गया था sudo एक बार आदेश रूट विशेषाधिकारों के साथ चलाया जाता है, तो त्रुटि दूर हो जाएगी।

हालांकि, अगर यह लॉक से संबंधित त्रुटि है, तो इसे और जांच की आवश्यकता है।

/ Var / lib / dpkg / क्या है?

"/ Var / lib / dpkg /" को पैकेज मैनेजर "डीपीकेजी" के लिए कार्यशील निर्देशिका के रूप में सोचा जा सकता है, जो बदले में वास्तव में "एपीटी-गेट" (साथ ही "एपीटी" और "योग्यता" उपकरण) के पीछे इंजन है। । जब भी आप सॉफ़्टवेयर को स्थापित या निकालने के लिए इन उपकरणों का उपयोग करते हैं, तो वे वास्तविक ऑपरेशन करने से पहले पैकेज डेटाबेस ("लॉक" फ़ाइल बनाकर) लॉक करते हैं, जो वास्तव में "/ var / lib / dpkg / " निर्देशिका। यह चरण किसी अन्य प्रक्रिया द्वारा किए जा रहे चल रहे संचालन के डेटा भ्रष्टाचार या बाधा से बचने में मदद करता है।

मान लीजिए कि आप उपरोक्त समझाया गया अवधारणा समझ चुके हैं, आइए अब जांच चरणों पर चर्चा करें।

चरण 1: देखें कि लॉक रखने वाली कोई अन्य प्रक्रिया है या नहीं

यह अब काफी तार्किक लग रहा है, है ना? और ऐसा करने के लिए, आप अच्छे पुराने ps कमांड की मदद का उपयोग कर सकते हैं और grep कमांड पर अपना आउटपुट पाइप कर सकते हैं ताकि आप जो चाहते हैं उसे grep कम समय बिताएं। उदाहरण के लिए, यहां एक आदेश दिया गया है जो आपको "apt, " "apt-get, " या "योग्यता" प्रक्रिया पहले से चल रहा है या नहीं:

 पीएस ऑक्स | grep apt 

चरण 2: थोड़ी देर प्रतीक्षा करें और फिर कार्रवाई करें

यदि वास्तव में एक आदेश है जो पहले से ही लॉक हासिल कर चुका है, तो आपको लॉक को पूरा करने और रिलीज़ करने के लिए आदर्श रूप से प्रतीक्षा करनी चाहिए। हालांकि, अगर आदेश अपेक्षित समय से अधिक ले रहा है और आप सुनिश्चित हैं कि यह कहीं भी अटक गया है, तो आप आगे बढ़ सकते हैं और उपलब्ध kill या killall आदेशों का उपयोग करके इसे मार सकते हैं (यहां उन पर अधिक जानकारी)। इससे आपको जिस समस्या का सामना करना पड़ रहा है उसे हल करना चाहिए।

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

Apt, apt-get या aptitude आदेशों को आम तौर पर अधिक सुरक्षित चलाने से शुरू की जाने वाली प्रक्रियाओं को मारना।

चरण 3: जब "ps" कमांड आउटपुट मदद नहीं करता है

ध्यान रखें कि कमांड लाइन टूल्स जैसे एपीटी और एपीटी-गेट से, सॉफ्टवेयर केंद्र या अपडेट मैनेजर जैसे कुछ जीयूआई-आधारित एप्लिकेशन भी इस लॉक को प्राप्त करते हैं।

नोट : अगर आपको उबंटू में बूट करने के बाद लॉक से संबंधित त्रुटि मिल रही है, तो यह संभव है कि आपका ऑपरेशन अपडेट-मैनेजर द्वारा शुरू किए गए स्वचालित मतदान के साथ ओवरलैप कर रहा हो। इस मामले में समस्या को हल करने के लिए थोड़ा इंतजार करना चाहिए।

जीयूआई-आधारित अनुप्रयोगों पर वापस आकर हम बात कर रहे थे, एक और उपयोगी और समय बचाने वाला विकल्प fuser कमांड का उपयोग करना है।

"फ्यूसर" के साथ आपको केवल उस फ़ाइल को एक्सेस करने की आवश्यकता है ("/ var / lib / dpkg / lock" हमारे मामले में), और आप उस फ़ाइल तक पहुंचने की प्रक्रिया को मार सकते हैं भले ही आप नहीं जानते कि यह कौन सी प्रक्रिया है। उदाहरण के लिए:

 sudo fuser -cuk / var / lib / dpkg / ताला 

ध्यान रखें कि fuser कमांड आपके द्वारा अभी तक की गई प्रक्रिया द्वारा अधिग्रहित लॉक को रिलीज़ नहीं करेगा, इसलिए आपको इसे मैन्युअल रूप से करना होगा:

 सुडो आरएम-एफ / var / lib / dpkg / ताला 

नोट : " लॉक को रिलीज़ करने " के लिए बस "लॉक" फ़ाइल को हटाने का मतलब है ताकि अन्य प्रक्रियाएं इसे पुन : प्रयास करके " लॉक प्राप्त कर सकें"।

आपको निम्न दो आदेशों को चलाने की भी आवश्यकता हो सकती है:

 सुडो फ्यूसर-कुक / var / कैश / एपीटी / अभिलेखागार / ताला; सुडो आरएम-एफ / var / कैश / एपीटी / अभिलेखागार / ताला 

महत्वपूर्ण युक्ति : कभी भी पहले चरण के रूप में लॉक फ़ाइलों को कभी भी हटाएं - यह केवल आपका अंतिम उपाय होना चाहिए।

निष्कर्ष

आम तौर पर, आगे बढ़ने और इसे हल करने से पहले समस्या के पीछे कारण को समझना हमेशा अच्छा होता है। किसी समस्या को हल करने के लिए अंधेरे से प्रयास करने की कोशिश कभी आपकी मदद नहीं करेगी - आप कुछ मामलों में सफल हो सकते हैं, लेकिन अधिकतर आप खुद को एक बड़ी गड़बड़ी में नहीं पाएंगे, खासकर यदि ओएस लिनक्स है।

क्या आपने कभी उस त्रुटि का सामना किया है जिस पर हमने चर्चा की है? आपने इसे कैसे हल किया? टिप्पणी में अपने जवाब छोड़ दो।