डेबियन या उबंटू (उपयुक्त) में दिए गए पैकेज की केवल निर्भरता स्थापित करें


18

क्या पैकेज की केवल आवश्यक निर्भरता को स्थापित करने का एक बेहतर तरीका है, बजाय इसे सीधे एप्ट-गेट (या dpkg के किसी भी अन्य दृश्यपटल) के साथ स्थापित करने के बजाय और फिर तुरंत इसे हटाकर, अपनी निर्भरता को छोड़ दें?

जवाबों:


22

apt-cache depends pkgname पैकेज की निर्भरता दिखाएगा।

यदि आप इसे एक कमांड में चाहते हैं, तो आप इससे भी बदतर काम कर सकते हैं:

apt-get install `apt-cache depends pkgname | awk '/Depends:/{print$2}'`

16

apt-get बिल्कुल के लिए एक कमांड प्रदान करता है ...

apt-get build-dep <package name>

आपको जो मैन पेज मिलते हैं

बिल्ड-डिप, स्रोत पैकेज के लिए बिल्ड निर्भरता को पूरा करने के प्रयास में पैकेज को स्थापित / हटाने के लिए उपयुक्त हो जाता है। डिफ़ॉल्ट रूप से निर्भरताएँ मूल रूप से पैकेज बनाने के लिए संतुष्ट होती हैं। यदि वांछित हो तो एक होस्ट-आर्किटेक्चर इसके बजाय -होस्ट-आर्किटेक्चर विकल्प के साथ निर्दिष्ट किया जा सकता है।


9
वहाँ build dependenciesऔर के बीच एक अंतर नहीं हो सकता है dependencies? जैसे कि, यदि आप सामान्य रूप से एक प्रोग्राम स्थापित करते हैं, तो आपको निर्भरताएँ मिलती हैं जिन्हें वास्तव में चलाने की आवश्यकता होती है, और बिल्ड-निर्भरता के साथ मैं पुस्तकालयों, कंपाइलरों, सामानों के बारे में अधिक सोचता हूं। इसलिए जैसा कि मुझे यकीन नहीं है (इस उत्तर में उत्थान होता है) लेकिन मुझे ऐसा लगता है कि यह तुच्छ नहीं है कि निर्माण-निर्भरता प्राप्त करना पैकेज चलाने की निर्भरता (चलाने) के समान है?
नन्ने

1
तुम सही हो। इसका उत्तर देने पर, बहुत पहले, मुझे बिल्ड निर्भरता (बिल्ड टाइम) और निर्भरता (रन टाइम) के बीच के अंतर की पूरी समझ नहीं थी। नन्ने को स्पष्ट करने के लिए धन्यवाद!
नाथन क्रॉक

4

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

aptitude install '?reverse-depends(foo)'

या

aptitude install '~Rfoo'

पैकेज को स्थापित करने, फिर उसे हटाने में समस्या यह है कि सभी पैकेज जो निर्भरता के रूप में स्थापित होते हैं, उन्हें "स्वचालित रूप से स्थापित" के रूप में चिह्नित किया जाएगा, और किसी भी इंस्टॉलेशन / अपग्रेड एक्शन द्वारा या जब apt-get autocleanतक आप नहीं चलाते हैं, तब तक हटा दिया जाएगा। उन्हें मैन्युअल रूप से स्थापित aptitude markया apt-markकमांड के रूप में चिह्नित करें ।

हालांकि, यह इस सवाल का जवाब देता है कि आप यह क्यों करना चाहते हैं मेरा सबसे अच्छा अनुमान यह है कि आप कुछ सॉफ़्टवेयर के लिए निर्भरता स्थापित करने की कोशिश कर रहे हैं जिसे आप हाथ से संकलन करने जा रहे हैं। उस स्थिति में, आप पहले से निर्भरताएँ स्थापित करेंगे apt-get build-dep packagename, लेकिन तब आपको एक डमी पैकेज बनाना चाहिए जिसमें रनटाइम निर्भरताएँ (जो आमतौर पर बिल्ड निर्भरताओं से भिन्न हों) equivके लिए सही निर्भरता वाले डमी पैकेज बनाने के लिए पैकेज का उपयोग करके आपका मैन्युअल संकलित कार्यक्रम। APT HOWTO के बारे equivsमें जानकारी देखें


3

स्रोतों से pkgname बनाने के मामले में

apt-get build-dep pkgname

1
निर्माण निर्भरताएँ रनटाइम निर्भरताएँ नहीं हैं
सेले

>> स्रोतों से pkgname के निर्माण के मामले में
eri

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