'镜头'的cabal依赖解析失败

Anu*_*ain 5 haskell cabal

我刚刚做了一个cabal更新并尝试从hackage安装'镜头'.这给了我以下错误 -

$ 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
Run Code Online (Sandbox Code Playgroud)

所以看起来mtl-2.0.1.0已经坏了.然而,一些更多的依赖性跟踪揭示镜头包定义中的任何内容实际上都不依赖于mtl的那个版本.事实上,我尝试的下一件事是 -

$ cabal install -j aeson
$ cabal install -j free
$ cabal install -j lens
Run Code Online (Sandbox Code Playgroud)

这成功没有问题.

那么为什么cabal会mtl-2.0.1.0lens直接安装时尝试安装?我已经尝试删除我的.ghc和.cabal目录并重复这些步骤,结果相同.我使用的cabal版本是1.16 -

$ cabal -V
cabal-install version 1.16.0.2
using version 1.16.0 of the Cabal library 
Run Code Online (Sandbox Code Playgroud)

rob*_*ong 0

我也遇到了这个错误。我想我已经成功地通过手动解包mtl-2.0.1.0、显式添加到(L:55)catch的导入列表Control.Exception中,然后运行来修复它。Control/Monad/Error/Class.hscabal install

之后我就能跑了cabal install lens。我很想知道这是否也适合你!