"निर्भर करता है" और "पूर्व-निर्भर" से क्या मतलब है, और उन 2 प्रकार की पैकेज आवश्यकताओं के बीच का अंतर जब मैं उबंटू में कुछ स्थापित कर रहा हूं?
"निर्भर करता है" और "पूर्व-निर्भर" से क्या मतलब है, और उन 2 प्रकार की पैकेज आवश्यकताओं के बीच का अंतर जब मैं उबंटू में कुछ स्थापित कर रहा हूं?
जवाबों:
जैसा कि इस लिंक से लिया गया है: https://www.debian.org/doc/debian-policy/#document-ch-relativeship
निर्भरता के 5 प्रकार हैं:
पाँच निर्भरता क्षेत्रों का अर्थ इस प्रकार है:
यह एक पूर्ण निर्भरता की घोषणा करता है। एक पैकेज को तब तक कॉन्फ़िगर नहीं किया जाएगा जब तक कि उसके डिपेंड्स फ़ील्ड में सूचीबद्ध सभी पैकेज सही ढंग से कॉन्फ़िगर नहीं किए गए हैं। यदि निर्भर पैकेज पर कार्यक्षमता की एक महत्वपूर्ण मात्रा प्रदान करने के लिए निर्भर पैकेज पर आवश्यक है, तो डिपेंड्स फ़ील्ड का उपयोग किया जाना चाहिए। डिपेंड्स फ़ील्ड का भी उपयोग किया जाना चाहिए यदि पोस्टस्टीन या प्रर्म स्क्रिप्ट को चलाने के लिए डिपेंडेड-ऑन पैकेज को अनपैक या कॉन्फ़िगर करने की आवश्यकता होती है। पोस्टस्टीन कॉन्फ़िगर के मामले में, पहले से तैयार किए गए पैकेजों को अनपैक और कॉन्फ़िगर किया जाएगा।
प्रर्म या अन्य पोस्टस्टीन क्रियाओं के मामले में, पैकेज की निर्भरता सामान्य रूप से कम से कम अनपैक की जाएगी, लेकिन वे केवल "हाफ-इंस्टाल्ड" हो सकते हैं यदि निर्भरता का एक पिछला अपग्रेड असफल हो गया। अंत में, डिपेंड्स फ़ील्ड का उपयोग किया जाना चाहिए, अगर पैकेज हटाने के बाद पूरी तरह से साफ करने के लिए पोस्टमार्ट स्क्रिप्ट द्वारा निर्भर-ऑन पैकेज की आवश्यकता होती है। इस बात की कोई गारंटी नहीं है कि जब पोस्टम चलाया जाता है तो पैकेज निर्भरताएं उपलब्ध होंगी, लेकिन पैकेज पर निर्भरता (विशेष रूप से पोस्टम रिमूव के मामले में) की घोषणा होने पर पैकेज उपलब्ध होने की अधिक संभावना है। यदि आवश्यक हो तो निर्भरता उपलब्ध न होने पर पोस्टम स्क्रिप्ट को उन कार्यों को छोड़ना चाहिए, जिन पर निर्भरता की आवश्यकता होती है।
यह फ़ील्ड डिपेंड्स की तरह है, सिवाय इसके कि यह dpkg को उन पैकेजों की स्थापना को पूरा करने के लिए मजबूर करता है जिनके नाम से पहले ही पैकेज की स्थापना शुरू हो जाती है जो पूर्व-निर्भरता की घोषणा करता है, यह इस तरह से काम करता है, जब एक पैकेज पूर्व-निर्भरता की घोषणा करने वाला होता है। यदि पूर्व-निर्भर पैकेज पूरी तरह से कॉन्फ़िगर किया गया है, या भले ही डिपेंडेड-ऑन पैकेज (ओं) केवल अनपैक्ड या "आधा-कॉन्फ़िगर" स्थिति में हैं, तो पूर्व-निर्भरता को संतुष्ट किया जा सकता है, बशर्ते कि वे कॉन्फ़िगर किए गए हों अतीत में कुछ बिंदु पर सही ढंग से (और हटाया नहीं गया है या आंशिक रूप से हटा दिया गया है)।
इस स्थिति में, पहले से कॉन्फ़िगर किए गए और वर्तमान में अनपैक्ड या "हाफ-कॉन्फ़िगर किए गए" दोनों संस्करणों को पूर्व-निर्भर क्षेत्र में किसी भी संस्करण के खंड को पूरा करना होगा। जब पूर्व-निर्भरता घोषित करने वाला पैकेज कॉन्फ़िगर किया जाने वाला है, तो पूर्व-निर्भरता को सामान्य निर्भरता माना जाएगा। इसे केवल तभी संतुष्ट माना जाएगा, जब तक कि पैकेज पर निर्भर सही ढंग से कॉन्फ़िगर किया गया हो। हालाँकि, निर्भरता के विपरीत, पूर्व-निर्भरता परिपत्र निर्भरता को तोड़ने की अनुमति नहीं देती है। यदि पूर्व-निर्भरता का सम्मान करने का प्रयास करते समय एक परिपत्र निर्भरता का सामना किया जाता है, तो स्थापना रद्द कर दी जाएगी।
प्री-डिपेंडेंस की भी आवश्यकता होती है यदि प्रीस्टीन स्क्रिप्ट नामित पैकेज पर निर्भर करती है। यदि संभव हो तो इस स्थिति से बचना सबसे अच्छा है। प्री-डिपेंडेंस का उपयोग संयम से किया जाना चाहिए, अधिमानतः केवल उन पैकेजों द्वारा जिनके समय से पहले अपग्रेड या इंस्टॉलेशन किसी भी अपग्रेड के साथ जारी रखने के लिए सिस्टम की क्षमता में बाधा आ सकती है।
छोटा संस्करण:
"निर्भरता" शब्द का इस्तेमाल मोटे तौर पर "डिपेंड्स" और "प्री-डिपेंड्स" रिश्तों (और कभी-कभी अन्य, कमजोर रिश्तों) को भी शामिल करने के लिए किया जा सकता है, या इसे "डिपेंड्स" के पर्याय के रूप में संकीर्ण रूप से इस्तेमाल किया जा सकता है।
"निर्भर करता है" और "पूर्व निर्भर करता है" पैकेज संबंधों के बीच का अंतर यह है कि यदि एक्स वाई पर निर्भर करता है, तो एक्स को कॉन्फ़िगर करने से पहले वाई को पूरी तरह से कॉन्फ़िगर किया जाना चाहिए। (कॉन्फ़िगरेशन एक ऐसा इंस्टॉलेशन स्टेप है, जहां एक पैकेज, एक बार इसकी फाइलें उचित स्थानों पर अनपैक कर दी जाती हैं - यानी, एक बार "इंस्टॉल" होने के बाद - इसमें जो भी अन्य आवश्यक बदलाव किए जाते हैं ताकि यह वास्तव में प्रदान किए गए सॉफ़्टवेयर का उपयोग करना संभव हो। उदाहरण के लिए। एक HTTP सर्वर के विन्यास में यह सुनिश्चित करना शामिल हो सकता है कि wwwउचित क्षमताओं वाला एक उपयोगकर्ता है और /var/wwwउचित अनुमतियों के साथ एक निर्देशिका है।) इसके विपरीत, यदि X पूर्व Y पर निर्भर करता है तो Y स्थापित होना चाहिए और (आमतौर पर) X से पहले पूरी तरह से कॉन्फ़िगर किया हुआ है स्थापित किया गया ।
देखें डेबियन नीति मैनुअल की धारा 7.2 अधिक जानकारी के लिए। मैं यहां दो सबसे प्रासंगिक खंडों का उद्धरण देता हूं, लेकिन उस खंड में (और अध्याय 7 में और अधिक सामान्य रूप से) अन्य जानकारी है जो इस बात पर प्रकाश डालने में मदद करती है कि निर्भरताएं कैसे काम करती हैं।
Dependsयह एक पूर्ण निर्भरता की घोषणा करता है। एक पैकेज को तब तक कॉन्फ़िगर नहीं किया जाएगा जब तक कि उसके
Dependsक्षेत्र में सूचीबद्ध सभी पैकेज सही ढंग से कॉन्फ़िगर नहीं किए गए हैं (जब तक कि ऊपर वर्णित एक परिपत्र निर्भरता नहीं है)।
Dependsक्षेत्र यदि निर्भर-ऑन पैकेज के आधार पैकेज के लिए आवश्यक है की कार्यक्षमता का एक महत्वपूर्ण राशि प्रदान करने के लिए इस्तेमाल किया जाना चाहिए।
Dependsक्षेत्र भी अगर इस्तेमाल किया जाना चाहिएpostinstयाprermस्क्रिप्ट की आवश्यकता होती है निर्भर-ऑन पैकेज पैक या आदेश को चलाने के लिए में विन्यस्त किया जाना है। पोस्टस्टीन कॉन्फ़िगर के मामले में, पहले से तैयार किए गए पैकेजों को अनपैक और कॉन्फ़िगर किया जाएगा। (यदि दोनों पैकेज निर्भरता लूप में शामिल हैं, तो यह अपेक्षित रूप से काम नहीं कर सकता; स्पष्टीकरण कुछ पैराग्राफ वापस देखें।)prermया अन्यpostinstकार्यों के मामले में , पैकेज निर्भरता सामान्य रूप से कम से कम अनपैक्ड होगी, लेकिन वे केवल हो सकती हैं "आधा-स्थापित" यदि निर्भरता का पिछला नवीनीकरण विफल हो गया।अंत में,
Dependsक्षेत्र का उपयोग किया जाना चाहिए यदिpostrmपैकेज हटाने के बाद पूरी तरह से साफ करने के लिए स्क्रिप्ट पर निर्भर-पर पैकेज की आवश्यकता होती है । इस बात की कोई गारंटी नहीं है कि पैकेज निर्भरता कोpostrmचलाने के लिए उपलब्ध होगा , लेकिन पैकेज पर निर्भरता (विशेषकर के मामले मेंpostrm remove) की घोषणा होने पर पैकेज उपलब्ध होने की अधिक संभावना है ।postrmस्क्रिप्ट शान से कार्रवाई है कि एक निर्भरता की आवश्यकता होती है कि निर्भरता उपलब्ध नहीं है छोड़ चाहिए।
Pre-Dependsयह फ़ील्ड ऐसा है
Depends, सिवाय इसके कि यहdpkgसंकुल की स्थापना को पूरा करने से पहले ही पैकेज की स्थापना शुरू कर देता है जो पूर्व-निर्भरता की घोषणा करता है, इस प्रकार है:जब एक पैकेज एक पूर्व निर्भरता की घोषणा के बारे में हो रहा है पैक पूर्व निर्भरता अगर निर्भर-ऑन पैकेज या तो पूरी तरह कॉन्फ़िगर किया गया है संतुष्ट किया जा सकता है, या यहाँ तक कि अगर निर्भर-ऑन पैकेज (रों) केवल पैक या "आधा में हैं -Configured "स्थिति, बशर्ते कि वे अतीत में कुछ बिंदु पर सही ढंग से कॉन्फ़िगर किए गए हों (और हटाए गए या आंशिक रूप से हटाए नहीं गए हैं)। इस स्थिति में, पहले से कॉन्फ़िगर किए गए और वर्तमान में अनपैक्ड या "हाफ-कॉन्फ़िगर किए गए" दोनों संस्करणों को
Pre-Dependsक्षेत्र में किसी भी संस्करण के खंड को पूरा करना होगा ।जब पूर्व-निर्भरता घोषित करने वाला पैकेज कॉन्फ़िगर किया जाने वाला है , तो पूर्व-निर्भरता को सामान्य माना जाएगा
Depends। इसे केवल तभी संतुष्ट माना जाएगा, जब तक कि पैकेज पर निर्भर सही ढंग से कॉन्फ़िगर किया गया हो। हालांकि, इसके विपरीतDepends,Pre-Dependsपरिपत्र निर्भरता को तोड़ने की अनुमति नहीं देता है। यदि सम्मान का प्रयास करते समय एक परिपत्र निर्भरता का सामना किया जाता हैPre-Depends, तो स्थापना रद्द कर दी जाएगी।
Pre-Dependsयदिpreinstस्क्रिप्ट नामित पैकेज पर निर्भर करता है, तो भी आवश्यक है । यदि संभव हो तो इस स्थिति से बचना सबसे अच्छा है।
Pre-Dependsसंयम से इस्तेमाल किया जाना चाहिए, अधिमानतः केवल उन पैकेजों द्वारा जिनके समय से पहले अपग्रेड या इंस्टॉलेशन किसी भी अपग्रेड के साथ जारी रखने के लिए सिस्टम की क्षमता को बाधित करेगा।
Pre-Dependsइससे पहले कि आपdebian-develमेलिंग सूची पर चर्चा की गई है और उस तक पहुँचने के बारे में एक आम सहमति पर एक पैकेज के लिए एक प्रविष्टि निर्दिष्ट न करें । निर्भरताएँ देखें , धारा 3.5 ।