2011-03-21 13 views
13

तो, यह एक व्यक्तिगत समस्या है, लेकिन शायद लोगों के पास अच्छी सलाह या कामकाज होगा।कैबल-इंस्टॉल और डेबियन

समस्या डेबियन के तहत कैबल-इंस्टॉल और हैकसेल-प्लेटफ़ॉर्म स्थापित करने के बारे में है।

जब आप apt-get install haskell-platform, यह cabal-install के साथ जहाज, और इसके आदेश cabal उपलब्ध है।

अब इस cabal-install है नहीं अप करने की तारीख:

> which cabal 
/usr/bin/cabal 
> /usr/bin/cabal --version 
cabal-install version 0.8.0 
using version 1.8.0.2 of the Cabal library 

लेकिन, cabal update चल रहा की मेरी समझ है कि यह कबाल अपडेट हो जाता है, लेकिन जब से यह नहीं है एक "डेबियन thingy", उस में कहते हैं ~/.cabal/bin/

> ~/.cabal/bin/cabal --version 
cabal-install version 0.8.2 
using version 1.8.0.2 of the Cabal library 

अब अपने सिस्टम 2 cabals है, और एक मैं cabal टाइप करके प्राप्त एक मैं उपयोग करने के लिए ... क्योंकि यह अपने आप के बजाय एक दूसरे को अद्यतन करने रखेंगे चाहते नहीं है, और इसलिए अप्रभावी है ।

alias cabal='~/.cabal/bin/cabal' 

अब:

> cabal --version 
cabal-install version 0.8.2 
using version 1.8.0.2 of the Cabal library 

तो, मेरा अंतिम सवाल:

तो क्या मैंने किया था मैं अपने ~/.bashrc में यह एलियास था

  • वहाँ एक deb भंडार है कि कैबल 0.8.2 रखती है?
  • क्या मेरा वर्तमान समाधान समस्या का कारण बन सकता है? (उदाहरण के लिए, which cabal अभी भी मेरे बेकार /usr/bin/cabal पर इंगित करता है, इसलिए यदि स्क्रिप्ट इस कमांड का उपयोग करती हैं तो वे बेवकूफ हो जाएंगे ...)
  • क्या कोई बेहतर समाधान के साथ आया था? (मेरा थोड़ा सा विज्ञापन है लेकिन दृश्यों के पीछे क्या हो रहा है, इसके बारे में मेरे खराब ज्ञान के साथ मैं यह सब कुछ कर सकता हूं ...)
  • अगर मुझे ऊपर बताई गई कुछ भी गलत या गलत है तो कृपया मुझे सही करें।
+1

+1। मुझे नहीं पता कि हास्केल को अपने पैकेज प्रबंधक की आवश्यकता क्यों है, जबकि अन्य भाषाओं को बिना किसी के प्राप्त होता है। – harpo

+5

कई भाषाओं में अपना खुद का पैकेज प्रबंधक है? उदाहरण के लिए रुबीजम्स रूबी समुदाय में बेहद लोकप्रिय है। – dbyrne

+0

रूबी, पाइप या जावा के लिए इसके डेरिवेटिव के लिए आसान_इंस्टॉल के लिए मणि, ... जो लोग तीसरे पक्ष के पुस्तकालयों का व्यापक रूप से उपयोग करते हैं, उनके लिए ओएस पैकेज प्रबंधन प्रणाली पर निर्भर हमेशा सर्वोत्तम विकल्प नहीं होता है। विशेष रूप से रूढ़िवादी ओएस की तरह डेबियन पर। मुझे भारी विकास (क्लाइंट के रूप में, एक देव के रूप में नहीं) के तहत कुछ पुस्तकालयों की नवीनतम रिलीज के साथ रहना चाहिए और हर बार उन्हें मैन्युअल रूप से इंस्टॉल करना नरक होगा। –

उत्तर

13

मैं क्या करता हूं --global ध्वज के साथ कैबल स्थापित कर रहा हूं। यह /usr/local/bin/cabal में कैबल स्थापित करेगा, इस प्रकार यह हमेशा डेबियन पैकेज कैबल को सुपरसिस करेगा।

एक और तरीका, आम तौर पर डेबियन पैकेज से बचने और सीधे अपने स्रोत से हास्केल प्लेटफार्म स्थापित करना है। यह दृष्टिकोण भी बेहतर है, अगर आप हमेशा हास्केल libs के नवीनतम रिलीज चाहते हैं।

+1

यह दिलचस्प है। तो मैंने इसे काम करने के लिए क्या किया है:> su> कैबल अपडेट> कैबल इंस्टॉल कैबल-इंस्टॉल --global> exit> (यहां मैंने अपने उपनाम को मेरे .bashrc से हटा दिया और टर्मिनल को फिर से खोल दिया) और अब यह अच्छा काम करता है! धन्यवाद। – Ptival

11

मैं PATH के सामने अपने उपयोगकर्ता-स्थानीय $HOME/.cabal/bin रखता हूं। मैं वितरण पैकेज से केवल ghc6, ghc6-prof, ghc6-doc और cabal-install स्थापित करता हूं। मैं नए ~/.cabal बूटस्ट्रैप बूटस्ट्रैप से अधिक कुछ के लिए वितरण cabal-install का उपयोग नहीं करता हूं। बाकी सभी मैं cabal install के साथ स्थापित करता हूं, जिसमें नए cabal स्वयं भी शामिल हैं।

जब मैं नए GHC उपयोग करना चाहते हैं, मैं /usr/local/stow/ghcVERSION में यह नियोजित करने, और जीएनयू stow साथ इसे सक्षम (यह /usr/local जो, फिर से, मेरी PATH में प्राथमिकता दी है में सिमलिंक कहते हैं)।जब मैं वितरण जीएचसी पर वापस स्विच करना चाहता हूं तो मैं इसे सभी प्रतीकात्मक लिंक हटाने के लिए stow -D चलाता हूं।

मैं cabal-dev का उपयोग कर परियोजना विशेष कबाल प्रतिष्ठानों है, और टूटी हुई निर्भरता जो समय-समय पर cabal के साथ होने से बचने के लिए पर विचार करें।

वास्तव में मैं हास्केल प्लेटफ़ॉर्म का उपयोग नहीं करता क्योंकि मुझे इसकी सभी आवश्यकता नहीं है और व्यक्तिगत पुस्तकालयों को स्थापित करने में सक्षम होना आसान लगता है। मैं वितरण पुस्तकालयों को स्थापित नहीं करता, क्योंकि उनमें से सभी उपलब्ध नहीं हैं या वास्तव में मुझे आवश्यक संस्करण हैं; और यदि उन सभी को एक ही स्थान पर स्थापित किया गया है (~/.cabal मेरे मामले में) तो संघर्षों को नियंत्रित करना बहुत आसान है। मैं --global के साथ कुछ भी इंस्टॉल नहीं करता, क्योंकि मुझे लगता है कि यह गलत है और रोलबैक करना मुश्किल है।

+0

धन्यवाद, यह दिलचस्प है। अगर मुझे कोई समस्या/परेशानी आती है तो मैं इस पर स्विच कर सकता हूं। – Ptival

1

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

जेटक्सी के दृष्टिकोण से एक मामूली मोड़ यह है कि मैं हास्केल प्लेटफार्म (स्रोत से) स्थापित करता हूं, इसे जीएचसी स्टोव निर्देशिका के साथ लंपता हूं। मुझे लगता है कि मुझे /usr/local/stow/haskell-platform-VERSION पथों को कॉल करना चाहिए, लेकिन मैं इसके बजाय /usr/local/stow/ghc-VERSION का उपयोग करता हूं।

4

बेशक यह जानकारी पुरानी हो गई है, लेकिन हां, डेबियन अस्थिर और परीक्षण लिखने के समय, कैबल इंस्टॉल 0.10.2 है।

आम तौर पर, हास्केल सामान की डेबियन पैकेजिंग उन उपयोगकर्ताओं को लक्षित करती है जो पैकेजों का एक सेट चाहते हैं जो एक साथ काम करने के लिए जाने जाते हैं, यानी कोई निर्भरता नरक नहीं, हमेशा नवीनतम और महानतम होने की कीमत पर नहीं। इसमें कैबल-इंस्टॉल शामिल है। मैं रिपॉजिटरीज़ से कैबल-इंस्टाल का उपयोग करता हूं, और केवल उन्हीं पुस्तकालयों को स्थापित करने के लिए जिन्हें डेबियन के लिए अभी तक पैक नहीं किया गया है।

अस्वीकरण: मैं उन लोगों में से एक हूं जो डेबियन के लिए उन पैकेजों को बनाते हैं।

+0

पर्याप्त मेला, मैं समझता हूं कि आप सभी की जरूरतों को पूरा नहीं कर सकते हैं, और इतने कठिन विकल्प नहीं हैं। – Ptival

संबंधित मुद्दे