"Could not resolve dependencies"阴谋集团由于MonadCatchIO变压器



我正试图构建一个使用propellor部署的包,但由于依赖性问题,我甚至无法对其进行配置。

这是我收到的错误消息:

$ cabal new-configure
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: prod-0.0.1 (user goal)
trying: base-4.9.1.0/installed-4.9... (dependency of prod-0.0.1)
trying: transformers-0.5.2.0/installed-0.5... (dependency of propellor-2.17.0)
next goal: MonadCatchIO-transformers (dependency of prod-0.0.1)
rejecting: MonadCatchIO-transformers-0.3.1.3 (conflict:
base==4.9.1.0/installed-4.9..., MonadCatchIO-transformers => base<4.9)
rejecting: MonadCatchIO-transformers-0.3.1.2,
MonadCatchIO-transformers-0.3.1.1, MonadCatchIO-transformers-0.3.1.0
(conflict: base==4.9.1.0/installed-4.9..., MonadCatchIO-transformers =>
base<4.8)
rejecting: MonadCatchIO-transformers-0.3.0.0,
MonadCatchIO-transformers-0.2.2.3, MonadCatchIO-transformers-0.2.2.2,
MonadCatchIO-transformers-0.2.2.1, MonadCatchIO-transformers-0.2.2.0,
MonadCatchIO-transformers-0.2.1.0, MonadCatchIO-transformers-0.2.0.0
(conflict: base==4.9.1.0/installed-4.9..., MonadCatchIO-transformers =>
base<4.7)
rejecting: MonadCatchIO-transformers-0.1.0.1 (conflict:
transformers==0.5.2.0/installed-0.5..., MonadCatchIO-transformers =>
transformers==0.1.*)
rejecting: MonadCatchIO-transformers-0.1.0.0,
MonadCatchIO-transformers-0.0.2.0, MonadCatchIO-transformers-0.0.1.0
(conflict: transformers==0.5.2.0/installed-0.5..., MonadCatchIO-transformers
=> transformers<0.2)
Dependency tree exhaustively searched.

"MonadatchIO transformers"软件包似乎需要一个旧版本的"基本"和一个更旧版本的transformers。

我试着遵循这篇文章的建议(编辑MonadatchIO变压器的配置,然后安装)来覆盖这些要求,但不知何故,我收到了同样的错误消息。

我也尝试过很多其他的东西,包括有沙盒和没有沙盒,以及重新安装我的整个ghc等等。有没有办法摆脱这个阴谋集团的地狱?

当面临Hackage包的不可满足依赖性时,您应该做的第一件事是检查Hackage的包文档,以更全面地了解问题。在这种情况下,文档显示,MonadatchIO transformers被弃用,取而代之的是提供类似接口的exceptions包(这解释了为什么monadatchIO transforemrs没有为base4.9更新)。因此,基本上有三种方法可以构建包:

1.将代码切换到异常

由于MonadatchIO转换器似乎是您直接在代码中使用的依赖项(而不是可传递依赖项),因此建议的长期解决方案是更新您的代码以使用异常,而不是monadatchIO转换器

2.本项目采用GHC 7.10

如果你现在不能或不想切换到异常,另一种选择是设置一个并行的GHC 7.10.x安装,这样你就可以使用基础4.8。关于如何方便地将cabal install与多个GHC版本一起使用的建议,请参阅将cabal与多个GHC版本一起安装(通过cabal设置-请务必阅读页面下方的最新答案)和Edsko de Vries的这篇博客文章(通过管理您的bash环境)。另一种可能性是使用Stack(而不是cabal-install)来构建这个特定的项目,并切换到提供base4.8和MonadatchIO变压器的解析器(如LTS 6.30 Stackage快照),因为Stack可以为需要它的项目安装和管理替代GHC版本(参见stack setup命令)。Stack不会干扰您通常的cabal安装环境或系统范围内的GHC安装;既然如此,如果你把这个项目切换到Stack,你就可以在其他地方继续使用cabal install

3.调整MonadatchIO变压器的上限

还有一种方法是安装自定义版本的MonadatchIO变压器,并调整基础变压器的上限。虽然这可能是启动和运行它的最快方法,但在这种情况下,考虑到MonadatchIO变压器已经被弃用好几年了,这也是最不可持续的方法。至于为什么这对你不起作用。。。

我曾尝试遵循这篇文章的建议(编辑MonadatchIO变压器的配置,然后安装)来覆盖这些要求,但不知何故,我收到了同样的错误消息。

。。。事实上,你得到了字面上的相同的错误消息表明阴谋集团安装没有选择你的自定义MonadatchIO变压器版本。您是否在您更改的.cab文件(如您链接的问答中所建议的)和项目的.cab文件中更改了MonadatchIO transformers的版本?

最新更新