Apt-get install और apt-get build-dep में क्या अंतर है?


33

पर apt-get आदमी के पेज , एक इस पा सकते हैं:

pkg स्थापित करें
यह विकल्प स्थापना के लिए वांछित एक या अधिक संकुल के बाद है। प्रत्येक पैकेज एक पैकेज का नाम है, न कि पूरी तरह से योग्य फ़ाइल नाम (उदाहरण के लिए, फेडोरा कोर सिस्टम में, glibc प्रदान किया गया तर्क होगा, glibc-2.4.8.i686.rpm नहीं)।
स्थापना के लिए निर्दिष्ट पैकेज (ओं) के लिए आवश्यक सभी पैकेजों को भी पुनः प्राप्त और स्थापित किया जाएगा
[...]

build-dep source_pkg एक स्रोत पैकेज के लिए बिल्ड निर्भरता को पूरा करने के प्रयास
में संकुल को स्थापित / हटाने के लिए apt-get का कारण बनता है

ऐसा लगता है कि उन दोनों पर निर्भरता को संतुष्ट करने की कोशिश की जा रही है, लेकिन मेरे पास प्रत्येक के साथ स्थापितmatplotlib करते समय अलग-अलग परिणाम थे : apt-get intallमेरे बाद वाले pip install matplotlibवर्चुअन में मेरे साथ काम नहीं किया , जबकि apt-get build-dep*।

*हाँ, मुझे matplotlibवीवी में स्थापित करने की आवश्यकता थी , लेकिन पाइप कुछ निर्भरता को हल नहीं कर सकता था, इसलिए मैंने इसे हल करने के लिए आलसी रूप से उपयुक्त उपयोग किया।

जवाबों:


39

लघु संस्करण।

apt-get install

एक नया पैकेज स्थापित करता है, स्वचालित रूप से हल करने और आश्रित पैकेजों को डाउनलोड करता है। यदि पैकेज स्थापित है, तो नवीनतम संस्करण में अपग्रेड करने का प्रयास करें।

apt-get build-dep

स्रोत पैकेज के लिए बिल्ड निर्भरता को पूरा करने के प्रयास में पैकेज स्थापित / हटाने के लिए उपयुक्त हो जाता है।

कमांड का sudo apt-get build-dep packagenameअर्थ 'पैकजेनम' के लिए सभी निर्भरताएं स्थापित करना है ताकि मैं इसे बना सकूं। "तो बिल्ड-डिप एक उपयुक्त-प्राप्त कमांड है जैसे कि इंस्टॉल, रिमूव, अपडेट आदि।

build-depआदेश प्रणाली में स्थानीय खजाने खोज करता है और पैकेज के लिए निर्माण निर्भरता स्थापित करें। यदि पैकेज स्थानीय रिपॉजिटरी में मौजूद नहीं है, तो यह एक त्रुटि कोड लौटाएगा।

Matplotlib स्थापित करने के लिए Ubuntu पर matplotlib स्थापित करें देखें

स्रोत: मैनपेज और रवि सेव


19

अंतर है कि क्या निर्भरता में की जरूरत है है क्रम के रूप में करने का विरोध किया buildtime पर

उदाहरण के लिए, शायद मैं एक द्विआधारी का निर्माण कर रहा हूं जो ओपनसेल का उपयोग करता है। पर निर्माण समय मैं openssl हेडर फाइल है, जो कर रहे हैं की आवश्यकता होगी libssl-dev। मैं तो यह एक के रूप में सूची होगी Build-Depends

हालाँकि, परिणामस्वरूप बाइनरी और पैकेज को हेडर और अन्य विकास फ़ाइलों की आवश्यकता नहीं होती है, इसलिए स्थापित समय पर मुझे ज़रूरत नहीं है libssl-dev। यह तब नहीं होगा Depends। लेकिन libssl, रनटाइम लाइब्रेरी मेरे बाइनरी के खिलाफ जुड़ा हुआ है, में होना चाहिए Depends

आपके द्वारा उद्धृत किया गया आदमी अनुभाग इसे इंगित करता है (यह एक पैकेज की " बिल्ड निर्भरता को संतुष्ट करने के बारे में बात करता है" ), लेकिन बिल्ड-डिपेंड्स का उपयोग किए जाने के पूर्व ज्ञान के बिना यह भ्रमित हो सकता है।

नियंत्रण फ़ाइल क्षेत्रों की परिभाषाओं के लिए डेबियन नीति मार्गदर्शिका पर एक नज़र डालें:

http://www.debian.org/doc/debian-policy/ch-controlfields.html

यहाँ बिल्ड-डिपेंड्स पर एक सेक्शन है। ध्यान दें कि यह " स्रोत पैकेज के लिए निर्भरता " शीर्षक के अंतर्गत है :

http://www.debian.org/doc/debian-policy/ch-relationships.html#s-sourcebinarydeps

और यह एक निर्भरता के बारे में बात करता है। बाइनरी पैकेज हेडर के तहत इसकी 'नोट करें :

http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps


धन्यवाद। ऐसा लगता है कि मुझे आपके विवरण के अनुसार स्रोत से लाइब्रेरी बनाने के लिए बिल्ड-डिप की आवश्यकता होगी।
काचो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.