2014-05-07 7 views
5

के लिए असफल रहा मैंने अभी एक कैबल अपडेट किया और हैकेज से 'लेंस' स्थापित करने का प्रयास किया। इससे मुझे निम्नलिखित त्रुटि मिली -कैबल निर्भरता संकल्प 'लेंस'

$ cabal install -j lens 
Resolving dependencies... 
Configuring dlist-0.7.0.1... 
... <snip> 
Configuring mtl-2.0.1.0... 
Building mtl-2.0.1.0... 
Failed to install mtl-2.0.1.0 
Last 10 lines of the build log (/home/aj/.cabal/logs/mtl-2.0.1.0.log): 
Building mtl-2.0.1.0... 
Preprocessing library mtl-2.0.1.0... 
[ 1 of 21] Compiling Control.Monad.Writer.Class (
Control/Monad/Writer/Class.hs, dist/build/Control/Monad/Writer/Class.o) 
[ 2 of 21] Compiling Control.Monad.State.Class (Control/Monad/State/Class.hs, 
dist/build/Control/Monad/State/Class.o) 
[ 3 of 21] Compiling Control.Monad.Reader.Class (
Control/Monad/Reader/Class.hs, dist/build/Control/Monad/Reader/Class.o) 
[ 4 of 21] Compiling Control.Monad.RWS.Class (Control/Monad/RWS/Class.hs, 
dist/build/Control/Monad/RWS/Class.o) 
[ 5 of 21] Compiling Control.Monad.Identity (Control/Monad/Identity.hs, 
dist/build/Control/Monad/Identity.o) 
[ 6 of 21] Compiling Control.Monad.Error.Class (Control/Monad/Error/Class.hs, 
dist/build/Control/Monad/Error/Class.o) 
Control/Monad/Error/Class.hs:93:18: Not in scope: `catch' 
... <snip> 
cabal: Error: some packages failed to install: 
aeson-0.7.0.3 depends on mtl-2.0.1.0 which failed to install. 
exceptions-0.6 depends on mtl-2.0.1.0 which failed to install. 
free-4.7.1 depends on mtl-2.0.1.0 which failed to install. 
lens-4.1.2 depends on mtl-2.0.1.0 which failed to install. 
mtl-2.0.1.0 failed during the building phase. The exception was: 
ExitFailure 1 

ऐसा लगता है कि mtl-2.0.1.0 टूटा हुआ है। हालांकि कुछ और निर्भरता ट्रैकिंग से पता चलता है कि लेंस पैकेज परिभाषा में कुछ भी वास्तव में एमटीएल के उस संस्करण पर निर्भर करता है। असल में, अगली चीज़ मैंने कोशिश की थी -

$ cabal install -j aeson 
$ cabal install -j free 
$ cabal install -j lens 

और यह बिना किसी समस्या के सफल होता है।

तो इंस्टॉल करते समय कैबल mtl-2.0.1.0 इंस्टॉल करने का प्रयास क्यों करेगा? मैंने अपने .ghc और .cabal निर्देशिकाओं को हटाने और एक ही परिणाम के साथ चरणों को दोहराने का प्रयास किया है। मैं जिस कैबल संस्करण का उपयोग कर रहा हूं वह 1.16 -

$ cabal -V 
cabal-install version 1.16.0.2 
using version 1.16.0 of the Cabal library 
+0

इस से संबंधित है 'ट्रांसफार्मर' का हालिया अपडेट। यदि आप कुछ दिनों तक प्रतीक्षा कर सकते हैं जब तक कि 'ट्रांसफार्मर' के आधार पर पैकेज अपग्रेड नहीं किए जाते हैं, आपको 'लेंस' इंस्टॉल करने वाले किसी भी मुद्दे में नहीं चलना चाहिए। –

+0

@DannyNavarro ठीक है मैंने उपरोक्त विधि का उपयोग कर लेंस स्थापित करने का प्रबंधन किया था। प्रश्न एक से अधिक है - क्यों, अगर 'कैबल इंस्टॉल लेंस' विफल हो जाता है, तो 'एबॉन और कैबल इंस्टॉल को स्थापित करें और कैबल इंस्टॉल लेंस' काम स्थापित करें? –

+0

मुझे लगता है कि यह काम कर रहा है क्योंकि, पहले 'फ्री' और 'एसन' स्थापित करके, आप इंस्टॉल किए गए संस्करणों का उपयोग करने के बजाय 'कैबल' को मजबूर कर रहे हैं बल्कि उन्हें स्वयं चुन सकते हैं। ऐसा लगता है कि कुछ पैकेज संस्करण चुनते हैं जो 'mtl-2.0.1.0' का उपयोग करता है। हो सकता है कि यह 'एसन' या 'मुक्त' निर्भरताओं में ऊपरी सीमा है, लेकिन संभवतः यह निर्भरता ग्राफ में कुछ अन्य पैकेज गहरा होगा। –

उत्तर

0

मैंने भी इस त्रुटि के खिलाफ जोर दिया। मुझे लगता है कि मैंने mtl-2.0.1.0 मैन्युअल रूप से को Control.Exception की आयात सूची में Control/Monad/Error/Class.hs (एल: 55) में, cabal install चलाकर मैन्युअल रूप से अनपॅक करके इसे ठीक करने में कामयाब रहा है।

उसके बाद मैं cabal install lens चलाने में सक्षम था। मुझे यह जानने में दिलचस्पी होगी कि क्या यह आपके लिए भी काम करता है!

1

वैकल्पिक हल है कि मैं का उपयोग कर रहा है पहले ट्रांसफार्मर-compat ट्रांसफार्मर के साथ

$ cabal install -ftransformer3 transformers-compat 

स्थापित करने के लिए 3 झंडा और फिर ट्रांसफार्मर के साथ लेंस स्थापित 0.3.0.0 बाधा

$ cabal install --constraint="transformers==0.3.0.0" lens 
संबंधित मुद्दे