निर्भरता और पूर्व-निर्भरता के बीच अंतर क्या है?


12

"निर्भर करता है" और "पूर्व-निर्भर" से क्या मतलब है, और उन 2 प्रकार की पैकेज आवश्यकताओं के बीच का अंतर जब मैं उबंटू में कुछ स्थापित कर रहा हूं?

जवाबों:


20

जैसा कि इस लिंक से लिया गया है: https://www.debian.org/doc/debian-policy/#document-ch-relativeship

निर्भरता के 5 प्रकार हैं:

पाँच निर्भरता क्षेत्रों का अर्थ इस प्रकार है:

निर्भर करता है

  • यह एक पूर्ण निर्भरता की घोषणा करता है। एक पैकेज को तब तक कॉन्फ़िगर नहीं किया जाएगा जब तक कि उसके डिपेंड्स फ़ील्ड में सूचीबद्ध सभी पैकेज सही ढंग से कॉन्फ़िगर नहीं किए गए हैं। यदि निर्भर पैकेज पर कार्यक्षमता की एक महत्वपूर्ण मात्रा प्रदान करने के लिए निर्भर पैकेज पर आवश्यक है, तो डिपेंड्स फ़ील्ड का उपयोग किया जाना चाहिए। डिपेंड्स फ़ील्ड का भी उपयोग किया जाना चाहिए यदि पोस्टस्टीन या प्रर्म स्क्रिप्ट को चलाने के लिए डिपेंडेड-ऑन पैकेज को अनपैक या कॉन्फ़िगर करने की आवश्यकता होती है। पोस्टस्टीन कॉन्फ़िगर के मामले में, पहले से तैयार किए गए पैकेजों को अनपैक और कॉन्फ़िगर किया जाएगा।

  • प्रर्म या अन्य पोस्टस्टीन क्रियाओं के मामले में, पैकेज की निर्भरता सामान्य रूप से कम से कम अनपैक की जाएगी, लेकिन वे केवल "हाफ-इंस्टाल्ड" हो सकते हैं यदि निर्भरता का एक पिछला अपग्रेड असफल हो गया। अंत में, डिपेंड्स फ़ील्ड का उपयोग किया जाना चाहिए, अगर पैकेज हटाने के बाद पूरी तरह से साफ करने के लिए पोस्टमार्ट स्क्रिप्ट द्वारा निर्भर-ऑन पैकेज की आवश्यकता होती है। इस बात की कोई गारंटी नहीं है कि जब पोस्टम चलाया जाता है तो पैकेज निर्भरताएं उपलब्ध होंगी, लेकिन पैकेज पर निर्भरता (विशेष रूप से पोस्टम रिमूव के मामले में) की घोषणा होने पर पैकेज उपलब्ध होने की अधिक संभावना है। यदि आवश्यक हो तो निर्भरता उपलब्ध न होने पर पोस्टम स्क्रिप्ट को उन कार्यों को छोड़ना चाहिए, जिन पर निर्भरता की आवश्यकता होती है।

की सिफारिश की

  • यह एक मजबूत, लेकिन निरपेक्ष नहीं, निर्भरता की घोषणा करता है। अनुशंसित फ़ील्ड को उन पैकेजों को सूचीबद्ध करना चाहिए, जो एक साथ सभी लेकिन असामान्य प्रतिष्ठानों में एक साथ मिलेंगे।

पता चलता है

  • इसका उपयोग यह घोषित करने के लिए किया जाता है कि एक पैकेज एक या अधिक अन्य के साथ अधिक उपयोगी हो सकता है। इस क्षेत्र का उपयोग पैकेजिंग प्रणाली और उपयोगकर्ता को बताता है कि सूचीबद्ध पैकेज इस से संबंधित हैं और शायद इसकी उपयोगिता बढ़ा सकते हैं, लेकिन यह है कि उनके बिना यह स्थापित करना पूरी तरह से उचित है।

बढ़ाता है

  • यह क्षेत्र सुगेट्स के समान है लेकिन विपरीत दिशा में काम करता है। इसका उपयोग यह घोषित करने के लिए किया जाता है कि एक पैकेज दूसरे पैकेज की कार्यक्षमता को बढ़ा सकता है।

पूर्व निर्भर करता है

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

  • इस स्थिति में, पहले से कॉन्फ़िगर किए गए और वर्तमान में अनपैक्ड या "हाफ-कॉन्फ़िगर किए गए" दोनों संस्करणों को पूर्व-निर्भर क्षेत्र में किसी भी संस्करण के खंड को पूरा करना होगा। जब पूर्व-निर्भरता घोषित करने वाला पैकेज कॉन्फ़िगर किया जाने वाला है, तो पूर्व-निर्भरता को सामान्य निर्भरता माना जाएगा। इसे केवल तभी संतुष्ट माना जाएगा, जब तक कि पैकेज पर निर्भर सही ढंग से कॉन्फ़िगर किया गया हो। हालाँकि, निर्भरता के विपरीत, पूर्व-निर्भरता परिपत्र निर्भरता को तोड़ने की अनुमति नहीं देती है। यदि पूर्व-निर्भरता का सम्मान करने का प्रयास करते समय एक परिपत्र निर्भरता का सामना किया जाता है, तो स्थापना रद्द कर दी जाएगी।

  • प्री-डिपेंडेंस की भी आवश्यकता होती है यदि प्रीस्टीन स्क्रिप्ट नामित पैकेज पर निर्भर करती है। यदि संभव हो तो इस स्थिति से बचना सबसे अच्छा है। प्री-डिपेंडेंस का उपयोग संयम से किया जाना चाहिए, अधिमानतः केवल उन पैकेजों द्वारा जिनके समय से पहले अपग्रेड या इंस्टॉलेशन किसी भी अपग्रेड के साथ जारी रखने के लिए सिस्टम की क्षमता में बाधा आ सकती है।

छोटा संस्करण:

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

2
ध्यान दें कि विरोधी निर्भरताएं भी हैं जैसे कि संघर्ष और ब्रेक। और बिल्ड-डिपेंडेंस जैसी निर्भरता का निर्माण करें।
एलेक्सिस विलके

3

"निर्भरता" शब्द का इस्तेमाल मोटे तौर पर "डिपेंड्स" और "प्री-डिपेंड्स" रिश्तों (और कभी-कभी अन्य, कमजोर रिश्तों) को भी शामिल करने के लिए किया जा सकता है, या इसे "डिपेंड्स" के पर्याय के रूप में संकीर्ण रूप से इस्तेमाल किया जा सकता है।

"निर्भर करता है" और "पूर्व निर्भर करता है" पैकेज संबंधों के बीच का अंतर यह है कि यदि एक्स वाई पर निर्भर करता है, तो एक्स को कॉन्फ़िगर करने से पहले वाई को पूरी तरह से कॉन्फ़िगर किया जाना चाहिए। (कॉन्फ़िगरेशन एक ऐसा इंस्टॉलेशन स्टेप है, जहां एक पैकेज, एक बार इसकी फाइलें उचित स्थानों पर अनपैक कर दी जाती हैं - यानी, एक बार "इंस्टॉल" होने के बाद - इसमें जो भी अन्य आवश्यक बदलाव किए जाते हैं ताकि यह वास्तव में प्रदान किए गए सॉफ़्टवेयर का उपयोग करना संभव हो। उदाहरण के लिए। एक 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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.