cabal未能安装mtl缺少变压器的依赖

时间:2016-06-21 12:40:37

标签: cabal-install

我试图使用cabal来安装mtl,而它告诉我我错过了transformers ==0.4.* && ==0.5.2.0

$ cabal install mtl
Resolving dependencies...
Configuring mtl-2.2.1...
cabal.exe: At least the following dependencies are missing:
transformers ==0.4.* && ==0.5.2.0
cabal.exe: Error: some packages failed to install:
mtl-2.2.1 failed during the configure step. The exception was:
ExitFailure 1

我在这里待了差不多一个星期。我在版本0.4.3.0和0.5.2.0中安装了变压器。我的cabal版本是1.10.2.0,我的ghc是7.6.3。我是ghc的新手,所以我无法弄清问题是什么。我无法理解transformers ==0.4.*的含义。有什么建议?非常感谢!

1 个答案:

答案 0 :(得分:2)

该行

transformers ==0.4.* && ==0.5.2.0

是变换器库版本的依赖性约束。这里它声明它要求变换器版本同时为0.4。*和0.5.2.0。 虽然可以安装不同的版本,但在编译期间只能使用一个版本 - 因此,永远不会满足此约束。

由于某些原因,cabal似乎与mtl包的两个revisions混淆了。 第二次修订增加了对变形金刚-5的支持。另请参阅mtl的issue 30,其中注意到hackage的元数据是第二个修订版,但最终下载的源tarball是原始版本。

在发布mtl的新版本之前,您必须显式安装transformers-0.4.3.0(以及该版本),然后安装mtl。

cabal install transformers-0.4.3.0

如果在安装mtl时满足依赖关系,transformers-0.4.3.0将通过依赖性检查。 似乎cabal在安装该版本时会自动将最新版本添加为依赖项(例如== transformers-0.5.2.0)。因此,只应安装0.4。*版本。

如果您已经安装了最新的变形金刚版本,则可以uninstall it

ghc-pkg unregister --force transformers-0.5.2.0
rm -r .cabal/packages/hackage.haskell.org/transformers/0.5.2.0

(对于安装的每个5.x版本执行此操作,请参阅cabal info transformers以获取已安装版本的列表。)