जवाबों:
यह एक महत्वपूर्ण dpkg
मुद्दा नहीं है (जैसा कि मेरे संपादित सुझाव के शीर्षक के अनुसार)। बल्कि, यह कुछ ऐसा है जो हर पैकेज मैनेजर (जिसमें से मैं जानता हूँ) करता है; और अच्छे कारण के लिए। हालांकि, मुझे समझ में नहीं आता कि यह भ्रामक क्यों हो सकता है।
पैकेज प्रबंधक स्थापित पैकेजों की जानकारी को ट्रैक करने के लिए डेटाबेस पर निर्भर करते हैं। यदि कई उपयोगकर्ता एक ही समय में डेटाबेस में लिखने का प्रयास करते हैं, तो इसके पास डेटा को दूषित करने का एक उच्च मौका है (जो सिस्टम के साथ वास्तव में खराब हो जाएगा)।
परिणामस्वरूप, कई (सभी?) पैकेज प्रबंधक यह संकेत करने के लिए लॉकफ़ाइल पर भरोसा करते हैं कि डेटाबेस को लिखा जा रहा है, इसलिए किसी अन्य क्लाइंट को ऐसा करने की अनुमति नहीं दी जानी चाहिए।
ध्यान दें कि बुद्धिमान पैकेज प्रबंधक यह निर्धारित करने में सक्षम हो सकते हैं कि कोई अनुरोध केवल पढ़ने के लिए है और डेटाबेस को लॉक करने की आवश्यकता नहीं है। नतीजतन; कुछ कार्यों के लिए समवर्ती रूप से चलाया जाना संभव है जहां अन्य नहीं होंगे।
लॉक फ़ाइल का उपयोग कई उदाहरणों के समानांतर निष्पादन को रोकने के लिए किया जाता है ।
पैकेज प्रबंधकों के लिए यह महत्वपूर्ण क्यों है?
एक पैकेज मैनेजर - एक उच्च स्तरीय दृश्य से - एक ऐसा प्रोग्राम है जो हार्ड डिस्क में जटिल परिवर्तन लागू करता है ।
परिवर्तन एक चरण ("परमाणु") में नहीं किए जा सकते हैं , इसलिए कई चरण हैं; पहले चरण के परिणाम पर कई चरण निर्भर करते हैं।
इसलिए, पैकेज प्रबंधक को प्रत्येक चरण को निष्पादित करने से पहले हार्ड डिस्क का या तो विश्लेषण करना होगा, या बस एक बार इसका विश्लेषण करना होगा और उन परिवर्तनों का ट्रैक रखना होगा जो इसे स्वयं लागू करता है। पहला विकल्प बेहद धीमा है। दूसरे के लिए आवश्यक है कि कोई अन्य उदाहरण परिवर्तन न करे।
कई अन्य समस्याएं हैं जो सामने आ सकती हैं।
यह है असंभव नहीं एक पैकेज प्रबंधक है कि समानांतर में काम कर सकते हैं लागू करने के लिए है, लेकिन यह है भी लायक होने के लिए जटिल । जैसा कि, आप कल्पना नहीं कर सकते कि कितना जटिल है। वास्तव में।
dkpg
(और rpm
और अधिकांश अन्य पारंपरिक पैकेज प्रबंधकों) एक वैश्विक अंतरिक्ष, जिसका अर्थ है कि संकुल दूसरे का परस्पर विरोध कर सकते हैं (उदाहरण के लिए में संकुल की स्थापना के द्वारा काम A
और B
एक ही समय में स्थापित नहीं किया जा सकता है, क्योंकि वे दोनों स्थापित /usr/lib/libfoo.so
)। पैकेज प्रबंधकों को इस तरह के संघर्षों का पता लगाना चाहिए और सिस्टम को सुसंगत स्थिति में रखने के लिए ऐसे इंस्टॉलेशन अनुरोधों को अस्वीकार करना चाहिए। एक ही समय पर चलने वाले पैकेज मैनेजर के कई उदाहरण होने के कारण यह बहुत जटिल और त्रुटि वाला होगा।
संघर्ष-मुक्त पैकेज प्रबंधक (जैसे http://0install.net ) समानांतर में कई पैकेज स्थापित करने की अनुमति दे सकते हैं, और लॉक फ़ाइलों की आवश्यकता नहीं है ( A/libfoo.so
और B/libfoo.so
अलग-अलग निर्देशिकाओं में जाएंगे)।
1 एक ही समय में सिस्टम पर मौजूद और उपलब्ध होने के अर्थ में, और समान रूप से सिस्टम में डाउनलोड और जोड़े जाने के अर्थ में समानांतर दोनों।