के लिए असफल रहा मैंने अभी एक कैबल अपडेट किया और हैकेज से 'लेंस' स्थापित करने का प्रयास किया। इससे मुझे निम्नलिखित त्रुटि मिली -कैबल निर्भरता संकल्प 'लेंस'
$ 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
इस से संबंधित है 'ट्रांसफार्मर' का हालिया अपडेट। यदि आप कुछ दिनों तक प्रतीक्षा कर सकते हैं जब तक कि 'ट्रांसफार्मर' के आधार पर पैकेज अपग्रेड नहीं किए जाते हैं, आपको 'लेंस' इंस्टॉल करने वाले किसी भी मुद्दे में नहीं चलना चाहिए। –
@DannyNavarro ठीक है मैंने उपरोक्त विधि का उपयोग कर लेंस स्थापित करने का प्रबंधन किया था। प्रश्न एक से अधिक है - क्यों, अगर 'कैबल इंस्टॉल लेंस' विफल हो जाता है, तो 'एबॉन और कैबल इंस्टॉल को स्थापित करें और कैबल इंस्टॉल लेंस' काम स्थापित करें? –
मुझे लगता है कि यह काम कर रहा है क्योंकि, पहले 'फ्री' और 'एसन' स्थापित करके, आप इंस्टॉल किए गए संस्करणों का उपयोग करने के बजाय 'कैबल' को मजबूर कर रहे हैं बल्कि उन्हें स्वयं चुन सकते हैं। ऐसा लगता है कि कुछ पैकेज संस्करण चुनते हैं जो 'mtl-2.0.1.0' का उपयोग करता है। हो सकता है कि यह 'एसन' या 'मुक्त' निर्भरताओं में ऊपरी सीमा है, लेकिन संभवतः यह निर्भरता ग्राफ में कुछ अन्य पैकेज गहरा होगा। –