我正在尝试在另一台计算机上安装我的Yesod Web应用程序。
我已将它安装在我当前的机器上,可以cabal install
在那里没有任何问题。
我似乎在另一台机器上遇到了麻烦(这是一个新的Ubuntu VM - 例如,之前没有安装过的cabal包。
请注意,我没有对我的设置进行任何更改(例如,cabal文件完全相同)。
这是我不断得到的错误:
cabal:无法配置zlib-enum-0.2.2。它需要zlib-bindings == 0.1。*
对于依赖于zlib-bindings == 0.1。*,有这些包:
zlib-bindings-0.1.0和zlib-bindings-0.1.0.1。但是没有一个可用 排除zlib-结合-0.1.0,因为zlib-conduit-0.2.0.1需要zlib-结合> = 0.0.3&& &小于0.1
排除zlib-bindings-0.1.0,因为选择了zlib-bindings-0.0.3.2而不是
由于顶级依赖性zlib-bindings == 0.0.3.2
,排除了zlib-bindings-0.1.0 排除了zlib-bindings-0.1.0.1,因为zlib-conduit-0.2.0.1需要zlib-bindings> = 0.0.3&& &小于0.1
排除zlib-bindings-0.1.0.1,因为选择了zlib-bindings-0.0.3.2而不是
zlib-bindings-0.1.0.1被排除,因为顶级依赖关系zlib-bindings == 0.0.3.2
我已经尝试了各种方法来解决这个问题,但无论我走的是什么道路,我都会遇到同样的问题。
我的猜测是,这些包的版本在这一点上是冲突的。
如何解决这个问题直到它得到解决?
答案 0 :(得分:3)
您可能想尝试安装新的Yesod Platform(Hackage page):
cabal install yesod-platform
这是一个元数据包,它依赖于Yesod的特定版本及其所有依赖项,旨在避免像这样的版本冲突。
您还可以尝试使用cabal-install的开发版本,该版本具有迈克尔提到的模块化依赖解算器。如果您darcs get --lazy http://darcs.haskell.org/cabal/
,您应该可以在bootstrap.sh
中运行cabal/cabal-install
进行安装(但您可能应首先擦除~/.cabal
和~/.ghc
。 1 但是,您仍然必须通过将--solver=modular
传递给cabal
来明确请求模块化解算器。
请注意,即使它是开发版本,它实际上也非常稳定;很多人在GHC 7.4.1(包括我)上使用它,因为Hackage上的版本不能编译。到目前为止我没有任何问题。
1 这是针对Linux的;我认为OS X上的相关目录是~/Library/Haskell
。我不知道在Windows上做什么,特别是因为shell脚本不会在那里运行。
答案 1 :(得分:3)
这是阴谋依赖地狱的一个典型例子。从理论上讲,错误在于zlib-enum
,因为它应该有一个主要的版本凹凸来反映zlib-bindings
的主要版本凹凸。但实际上,问题是cabal的依赖性分析器。希望很快就能准备好新的。
同时,取决于zlib-enum< = 0.2.1应该有效。
另外,@ ehird的答案也应该有所帮助,虽然它可能无法完全解决问题。