2012-10-15 33 views
5

मैं उन पैकेजों को स्थापित करने की कोशिश कर रहा हूं जिनके लिए मैंने स्थापित किए गए आधार के आधार पर आधार के एक अलग संस्करण की आवश्यकता है (मेरे पास 4.6.0.0 है, उन्हें < 4.6 की आवश्यकता है)। मैं इन्हें अपने सिस्टम पर कैसे स्थापित कर सकता हूं?पुस्तकालयों को 'आधार' के एक अलग संस्करण की आवश्यकता होने पर क्या करना है?

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

उत्तर

4

आप कर सकते हैं के बाद से base को पुनर्स्थापित नहीं करें, इन संकुल को अद्यतन करने से पहले स्थापित करने का एकमात्र तरीका स्रोत को पकड़ना है,

cabal unpack foo 

और फिर foo.cabal संपादित करते समय, base के लिए ऊपरी सीमा को बदलने, पैकेज संस्करण (एक .1 संलग्न) इतनी है कि जब अन्य संकुल स्थापित करने cabal लगता नहीं है कि यह टूट गया है, के बाद से .cabal फ़ाइल यह जानता है (से टक्कर पैकेज इंडेक्स) यह base का एक अलग संस्करण की आवश्यकता है कहते हैं, और

cabal install 
निर्देशिका आप को अनपैक से

चूंकि बेस-4.6 में कुछ महत्वपूर्ण बदलाव हुए थे; Eq और Show सुपर-क्लास Num से हटा दिया गया है, और Bits अब एक सुपर क्लास के रूप में Num है, यह कुछ कार्यों संकुल संकलन बनाने के लिए की कमी के Eq, Show या Num जोड़कर कोड तय करने के लिए आवश्यक हो सकता है।

यह असुविधाजनक है, लेकिन कुछ हफ्तों के लिए नवीनतम जीएचसी संस्करण के साथ अपने आप को अद्यतित करने की कीमत है।

+0

यदि मैं ऐसा करता हूं, तो मुझे एक संदेश मिलता है जो मुझे बता रहा है कि यह आधार के लिए बाधाओं को पूरा नहीं कर सकता है, और स्थापना को रोकता है। – bfops

+0

क्या? बेस-4.6 की अनुमति देने के लिए '। कैबल' फ़ाइल संपादित करने के बाद? –

+0

@RobotGymnast आप कौन सा पैकेज विशेष रूप से स्थापित करने की कोशिश कर रहे हैं? स्पष्टीकरण के लिए –

1

यदि आप चाहते हैं कि आपके किसी भी प्रोग्राम इन पैकेजों पर निर्भर न हो, तो आप के लिए ड्रॉप-इन प्रतिस्थापन के रूप में cabal-dev का उपयोग कर सकते हैं। पूर्व वर्तमान निर्देशिका में cabal-dev पथ में संकुल की स्थानीय प्रतियों को स्थापित करता है। इसे स्थापित करने के लिए, बस चलाने:

cabal install cabal-dev 

पोर्टेबिलिटी के लिए, आप एक makefile के लिए कुछ इस तरह जोड़ सकते हैं:

CABAL ?= cabal 

build : 
    $(CABAL) build --builddir=$(BUILD_PATH) 
फिर अपने बैश सेटिंग्स में

:

CABAL=cabal-dev 
export CABAL 
1

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

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