यह कैसे बताया जाए कि निर्भरता मैन्युअल रूप से हल की जाती है?


14

मान लीजिए कि एक सॉफ्टवेयर है जिसे मैं स्थापित नहीं करना चाहता apt, लेकिन मैन्युअल रूप से। (TeXLive, क्योंकि मैं 2011 रिलीज़ का उपयोग करना चाहता हूं और aptकेवल 2009 संस्करण है।)

मान लीजिए कि एक और सॉफ्टवेयर है जिसे मैं स्थापित करना चाहता हूं apt, जो हालांकि पहले सॉफ्टवेयर पर निर्भर करता है । (Vim LaTeXSuite, क्योंकि यह सिस्टम-वाइड उपयोग के लिए मैन्युअल रूप से स्थापित करने के लिए एक दर्द है।)

डिफ़ॉल्ट रूप से, aptपहला सॉफ़्टवेयर "नहीं" दिखता है, और केवल निर्भरता मेटाडेटा को संतुष्ट करने के लिए बहुत सारे अनावश्यक और अवांछित cruft (यानी TeXLive 2009) को स्थापित करने के लिए आगे बढ़ता है।

मैं कैसे कर सकता हूँ:

  • बताएं aptकि किसी दिए गए पैकेज (जैसे texlive) को सभी व्यावहारिक उद्देश्यों के लिए स्थापित किया गया है, और इसे किसी अन्य पैकेज की निर्भरता के रूप में स्थापित नहीं किया जाना चाहिए?

  • बताओ aptकिसी दिए गए पैकेज (उदाहरण के लिए स्थापित करने के लिए vim-latexsuiteअपनी निर्भरता के बारे में परेशान बिना)?

मैं विभिन्न माध्यम से sifted किया है aptसे संबंधित manpages और खाली आया था, और यह भी पाया इस सवाल इस साइट पर लेकिन लगता है कि है कि है यह करने के लिए एक कम hackish तरीका हो सकता है, नहीं?

(मेरे गेंटू समय से, मुझे याद है emerge --injectऔर /etc/portage/package.provides, और मैं मूल रूप से aptसमकक्षों की तलाश कर रहा हूं ।)


TeX Live 2011 को हाल ही में डेबियन सिड में जोड़ा गया है, इसलिए इसे मिंट के रूप में जल्दी या बाद में प्रचारित करना चाहिए (लेकिन उबंटू 12.04 "यह" छूट गया), इसलिए उबंटू 12.10 के साथ अक्टूबर के अंत से पहले नहीं)। यदि आप वास्तव में साहसी हैं, तो आप शायद डेबियन सिड से पैकेजों को हड़प सकते हैं, लेकिन चूंकि इस मामले में यह बहुत सारे पैकेजों की चिंता करता है, यह शायद एक अच्छा समाधान नहीं है। लॉन्चपैड . net / ~texlive-backports /+ archive / ppa पर एक पीपीए स्थापित है ( Ubuntu में इस बग रिपोर्ट देखें ) जिसे आप शायद मिंट में भी उपयोग कर सकते हैं।
डैनियल एंडरसन


तीन साल बाद कोई टिप्पणी नहीं ... समझाने की परवाह?
देवसोलर

@DevSolar: ऐसा लगता है जैसे किसी ने सवाल को गलत बताया और दोनों ने तीन साल बाद जवाब दिया, यह स्पष्ट किए बिना कि क्यों। सबसे अच्छा सिर्फ सिकुड़ने और आगे बढ़ने के लिए, मुझे लगता है :-)।
डैनियल एंडरसन

जवाबों:


13

आपको equivsमेटा-पैकेज बनाने के लिए पैकेज का उपयोग करना चाहिए जो ये निर्भरता प्रदान करते हैं, और फिर dpkgइन पैकेजों को स्थापित करने के लिए उपयोग करते हैं।

equivsइसके प्रलेखन को स्थापित करना और पढ़ना पर्याप्त होना चाहिए, लेकिन उबंटू के लिए यह मार्गदर्शिका काफी व्यापक है और अन्य एपीटी प्रणालियों पर भी लागू होनी चाहिए।


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

इस मामले में , texlive-base-binकेवल "अनुशंसित" प्रतीत होता है और आधार डेबियन वितरण में "डिपेंडेंसी" नहीं है कम से कम (शायद इस भाग texliveमें इतना बड़ा पैकेज है), लेकिन क्योंकि डेबियन पर अपस्ट्रीम TeX लाइव को स्थापित करना आम है वितरण संस्करण अक्सर बहुत पीछे रह जाता है (इस कारण से कि पैकेज एक ऐसा जानवर है जिसे अक्सर बिना पर्याप्त काम के पैक नहीं किया जा सकता है, जो ज्यादातर एक या कुछ व्यक्तियों द्वारा किया जाता है, जो दावा करते हैं कि उनके पास डेबियन के पास है) equivsचाल का उपयोग अक्सर TeX Live के साथ किया जाता है (वाह, यह वाक्य हाथ से निकल गया :-))।


जोड़ : पैकेज सिस्टम के बाहर TeXLive स्थापित करने की तलाश करने वालों के लिए अधिक विस्तृत निर्देशों के लिए, TeX.SX पर ये निर्देश अधिक व्यापक हैं और सबसे अधिक संभावना है कि इसे अपडेट रखा जाता रहेगा। उनमें equivsकदम के संबंध में अधिक स्पष्ट निर्देश भी शामिल हैं ।


मुझे नहीं पता कि यह कैसे हुआ, लेकिन लिनक्स मिंट टेक्सलाइव को "कठिन" निर्भरता बनाता है ... equivsपैकेज की कोशिश करेगा ।
देवसोलर

equivsबढ़िया काम किया। मैंने texlive-base-binउसी नाम के मूल "डमी" पैकेज को ओवरराइड करके (इसके द्वारा प्रदान texlive-binaries) का संस्करण 9999 बनाया , और vim-latexsuiteबिना किसी परेशानी के स्थापित किया ।
देवसोलर

1

आप --nodepsdpkg पर ध्वज का उपयोग कर सकते हैं , जिसे पैकेज पर निर्भरता के साथ स्थापित करना चाहिए।

   --ignore-depends=package,...
          Ignore  dependency-checking for specified packages (actu-
          ally, checking is performed, but only warnings about con-
          flicts are given, nothing else)

सर्वरफॉल्ट पर एक समान प्रश्न है जो देखने लायक है


उह ... ऐसी कोई बात नहीं? (कम से कम लिनक्स टकसाल 12 बॉक्स मैं यहाँ पर नहीं है।)
DevSolar

1
dpkg के लिए अपने, नहीं apt-get - - मेरा उत्तर संपादित यह दिखाने के लिए एचएम, मैं एक गलती की है करने लगते हैं
जर्नीमैन गीक

यह कुछ ऐसा है जो मुझे डेबियन व्युत्पन्न के साथ समाप्त करने के लिए भ्रमित करता है: पैकेज मैनेजर इंटरफेस की भीड़। मुझे लगता है कि उन्हें मिश्रण करते समय कोई यात्रा-वृत्तांत शामिल नहीं है? या मुझे उनमें से एक से चिपकना होगा?
DevSolar

सब कुछ dpkg पर आधारित है, अनिवार्य रूप से, apt और aptitude उसके सामने के छोर हैं, और apt और aptitude के लिए सामने के छोर हैं। dpkg का उपयोग आम तौर पर तब किया जाता है जब आप एक .deb फ़ाइल से संकुल संस्थापित करना चाहते हैं। मैं स्वयं अधिकांश भाग के लिए apt-get और dpkg से चिपक जाता हूं। 'डिफ़ॉल्ट' डेबियन स्वाद का पैकेज प्रबंधकों मिश्रण आमतौर पर reasonablys सुरक्षित होना चाहिए
जर्नीमैन गीक

यह आपके जवाब को मेरी वास्तविक समस्या के लिए मेरा पसंदीदा समाधान बनाता है, क्योंकि कुछ भी बदले में विम-लेटेक्सुसाइट पर निर्भर नहीं करता है। हालांकि, यह समाधान मौजूद होने के रूप में "टेक्सलाइव" को चिह्नित नहीं करता है , यह केवल इसके लिए पूछने से विम-लेटेक्सुसाइट रखता है। जैसे, डैनियल का जवाब बेहतर तरीके से सवाल का शीर्षक है। चेकमार्क उसके पास जाता है, यश आपके पास जाता है। ;-)
DevSolar

1

निम्नलिखित एक .deb फ़ाइल से निर्भरता को हटा देगा, इस मामले में liberl5.20 निर्भरता को freeradius से हटा रहा है:

dpkg-deb -x freeradius_2.2.5+dfsg-0.2+deb8u1_amd64.deb freeradius
dpkg-deb -e freeradius_2.2.5+dfsg-0.2+deb8u1_amd64.deb freeradius/DEBIAN
sed -i  -e 's/, libperl5.20 (>= 5.20.2)//g' freeradius/DEBIAN/control
dpkg-deb -b freeradius freeradius_2.2.5+dfsg-0.2+deb8u1_amd64.deb

यह आपको निर्भरता को जाने बिना उपयुक्त पैकेज को स्थापित करने की अनुमति देता है।

यदि आप मैन्युअल रूप से पैकेज के विशिष्ट संस्करण स्थापित कर रहे हैं तो आप apt-get upgradeभविष्य में पैकेज को अपग्रेड करने से रोकना चाहते हैं:

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