2015-01-07 9 views
10

में कैबल संस्करण अपडेट नहीं करता है, मैं हैकेल और कैबल के लिए नौसिखिया हूं, इसलिए शायद मुझे कुछ आसान याद आ रहा है।"कैबल इंस्टॉल कैबल-इंस्टाल" ओएसएक्स

मैं अद्यतन कबाल से स्थापित:

sudo cabal install cabal-install 
Password: 
Resolving dependencies... 
Configuring cabal-install-1.22.0.0... 
Building cabal-install-1.22.0.0... 
Installed cabal-install-1.22.0.0 
Updating documentation index 

हालांकि cabal --version का कहना है:

cabal-install version 1.18.0.5 
using version 1.18.1.4 of the Cabal library 

क्या हुआ कबाल से स्थापित 1.22.0.0?

उत्तर

12

cabal वैश्विक स्तर पर पैकेज स्थापित करने के दो तरीके हैं। ध्यान दें कि, परिणामस्वरूप, cabal को सूडो की आवश्यकता हो सकती है।

यह आदेश <PACKAGE> विश्व स्तर पर स्थापित हो जाएगा:

$ cabal install <PACKAGE> --global 

एक अधिक सामान्य समाधान के रूप में, फ़ाइल ~/.cabal/config को संपादित करने और False करने के लिए user-install निर्धारित किया है। यह स्वचालित रूप से --global ध्वज सेट करेगा ताकि आप बिना किसी चिंता के cabal install <PACKAGE> लिख सकें। यहाँ मेरी config फ़ाइल का एक टुकड़ा है:

... 
-- split-objs: False 
-- executable-stripping: True 
user-install: False 
-- package-db: 
-- flags: 
... 

तुम भी sudo को root-cmd सेट कर सकते हैं यदि वह पहले से नहीं है, तो यह है कि cabal स्वचालित रूप से जब यह एक अनुमति समस्या का सामना करना पड़ता रूट पासवर्ड के लिए संकेत देगा।

कुछ और जानकारी ऑनलाइन here है।

5

मुझे लगता है कि ~/Library/Haskell/bin पर एक अद्यतन कैबल है, इसलिए मैं इस प्रतिलिपि के प्रतीकात्मक लिंक के साथ/usr/bin/cabal को प्रतिस्थापित कर सकता हूं या मैं इस बाइनरी को /usr/bin पर प्रतिलिपि बना सकता हूं।

मुझे अभी भी दिलचस्पी है कि यह सुनिश्चित करने के लिए कि क्या नया कैबल डिफ़ॉल्ट रूप से उपयोग किया जाता है, एक और सुरुचिपूर्ण/कैननिक तरीका है।

+3

यह सब आपके पैथ द्वारा निर्धारित किया गया है। – ErikR

+0

इन उत्तरों पर एक नज़र डालें: http://stackoverflow.com/a/21200691/3649209, http://stackoverflow.com/a/19736802/3649209। –

2

TLDR: चल hash -r

बैश एक पथ hashtable कि बाइनरी के स्थान को आदेश नक्शे है की कोशिश करो। आपके पास अभी भी आपके पाथ में संभवतः कैबल का पुराना संस्करण हो सकता है (संभवतः एक सैंडबॉक्स में)। चूंकि कैबल एक नया आदेश नहीं है, हैशटेबल पुराने संस्करण की सेवा जारी रखेगा। hash -r हैशटेबल का पुनर्निर्माण करता है, इसलिए खोल सही ढंग से नया संस्करण ढूंढ लेगा (यह पुराना एक से पहले आपके पथ में दिखाई देता है)।

+0

मेरे लिए समस्या तय की गई – jojo

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