सॉफ्टवेयर इंस्टॉल करते समय आपको निर्भरता कैसे मिलती है?


1

सॉफ़्टवेयर इंस्टॉलेशन ट्यूटोरियल में, उनके पास हमेशा निर्भरता की एक लंबी सूची होती है। वे उन आश्रितों को कैसे पाते हैं?

उदाहरण के लिए, मैं एक नया उबंटू सर्वर शुरू कर रहा हूं, आरवीएम को स्थापित करने के निर्देशों का पालन कर रहा हूं। वे कुछ इस तरह प्रदान करते हैं:

sudo apt-get install git-core libreadline5 libncurses5-dev libreadline5-dev build-essential zlib1g-dev libssl-dev libpcre3-dev libxml2-dev libxslt-dev;

मैं केवल यह समझना चाहता हूं कि वे उन सभी पर निर्भरता कैसे पाते हैं। कॉपी और पेस्ट करना काम करता है, लेकिन मुझे लगता है कि इसे समझना अधिक महत्वपूर्ण है।

जवाबों:


1

आम तौर पर उपयुक्त आपके लिए यही करेंगे। यदि आप द्विआधारी पैकेज को स्थापित करने का प्रयास करते हैं जिसमें बिना निर्भरता है, तो उपयुक्त आपको बताएगा कि कौन से लापता हैं और आपको उन्हें भी स्थापित करने की अनुमति मांगते हैं।

अधिकांश स्रोत वितरण आपको एक README फ़ाइल में बताते हैं कि -देवी निर्भरताएं क्या हैं।


5

प्रत्येक पैकेज अपनी स्वयं की निर्भरता की एक सूची के साथ आता है। के लिए Debs , जो Ubuntu का उपयोग करता है, तो आप कर सकते हैं: -

[andys@daedalus ~]$ apt-cache depends git-core
git-core
  Depends: git

जब पैकेज बनाया जाता है तो पैकेज के लिए निर्भरताएँ निर्दिष्ट की जाती हैं। उनमें से कुछ मैन्युअल रूप से पैकेज मेंटेनर ( पैकेज के निर्माण के लिए जिम्मेदार व्यक्ति) द्वारा निर्दिष्ट किए जाते हैं , और कुछ स्वचालित रूप से निर्धारित किए जाते हैं जब पैकेज बनाया जाता है। यदि आप एक डेबियन स्रोत पैकेज को डाउनलोड, और में देखें, तो debian/controlफ़ाइल, आप की तरह लाइनों की एक संख्या दिखाई देगी Depends:, Conflicts:, Replaces:, आदि

तो, उदाहरण के लिए - git-coreकेवल एक पैकेज पर निर्भर करता है, जो है gitgitसंभवतः किसी प्रकार का एक रूपांतर है, जिसमें निर्भरता का एक पूरा बेड़ा है, यह सुनिश्चित करने के लिए कि सभी पैकेजों को चलाने के लिए परिशिष्ट स्थापित किए गए हैं - केवल एक पैकेज की निर्भरता को पूरा करने के लिए नहीं। अगर हम gitपैकेज को देखें: -

[andys@daedalus ~]$ apt-cache depends git
git
  Depends: libc6
  Depends: libcurl3-gnutls
  <...snip...>
  Suggests: git-cvs
  Suggests: git-svn
  Suggests: git-email
  <...snip...>
  Recommends: rsync
  <...snip...>
  Conflicts: git-core
  <...snip...>
  Breaks: stgit
  Breaks: stgit-contrib
  Replaces: <cogito>
  Replaces: git-core

... आप देखेंगे कि gitस्वयं में और भी निर्भरताएँ हैं। आगे चीजों को जटिल करने के लिए, एक और पैकेज स्थापित करने की आवश्यकता के अलावा अन्य प्रकार की निर्भरता है ...

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

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

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

विभिन्न पैकेज प्रबंधकों के पास इस निर्भरता समाधान को करने के विभिन्न तरीके हैंapt-get, aptitudeऔर dselect, उदाहरण के लिए, सभी अनिवार्य रूप से एक ही काम करते हैं लेकिन जिस तरह से वे अपने निर्णय को अलग करते हैं। आप ऐसा कर सकते हैं aptitudeऔर dselectखुशी से आपको एक पैकेज स्थापित करने के तरीके के साथ पेश करेंगे जबकि apt-getऐसा नहीं कर सकते।

यदि आप डेबियन पैकेज के बारे में अधिक जानने में रुचि रखते हैं, तो डेबियन न्यू मेंटेनर्स गाइड पर एक नज़र डालें , जो डेब्स के कुछ हिम्मत से अधिक है।


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