了解cabal安装错误

时间:2014-10-24 19:37:02

标签: haskell cabal

我正在尝试使用cabal安装Haskell项目,并且我遇到了依赖性问题:

cabal install && cabal run
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: Chips-0.1.0.0 (user goal)
trying: aeson-0.8.0.2 (dependency of Chips-0.1.0.0)
trying: unordered-containers-0.2.4.0/installed-698... (dependency of
aeson-0.8.0.2)
next goal: text (dependency of aeson-0.8.0.2)
rejecting: text-1.1.0.0/installed-9bd... (conflict: aeson => text>=1.1.1.0)
trying: text-1.2.0.0
next goal: hashable (dependency of aeson-0.8.0.2)
rejecting: hashable-1.2.2.0/installed-45b... (conflict: text==1.2.0.0,
hashable => text==1.1.0.0/installed-9bd...)
rejecting: hashable-1.2.2.0, 1.2.1.0, 1.2.0.10, 1.2.0.9, 1.2.0.8, 1.2.0.7,
1.2.0.6, 1.2.0.5, 1.2.0.4, 1.2.0.3, 1.2.0.2, 1.2.0.1, 1.2.0.0, 1.1.2.5,
1.1.2.4, 1.1.2.3, 1.1.2.2, 1.1.2.1, 1.1.2.0, 1.1.1.0, 1.1.0.0, 1.0.1.1,
1.0.1.0, 1.0.0 (conflict: unordered-containers =>
hashable==1.2.2.0/installed-45b...)
Dependency tree exhaustively searched.

Note: when using a sandbox, all packages are required to have consistent
dependencies. Try reinstalling/unregistering the offending packages or
recreating the sandbox.
make: *** [all] Error 1

我理解依赖关系并且我理解如果两个包需要不同版本的相同依赖关系,则cabal将无法编译整个应用程序。也就是说,我真的不明白这个错误信息试图告诉我的是什么。哪些包具有冲突依赖性?为什么我使用的沙箱不能阻止这个?

这部分甚至意味着什么?

rejecting: hashable-1.2.2.0/installed-45b... (conflict: text==1.2.0.0,
hashable => text==1.1.0.0/installed-9bd...)

1 个答案:

答案 0 :(得分:3)

不幸的是,如果您在全球范围内安装了text版本1.1.0.0,Sandboxes将不会帮助您。 (该版本附带当前的平台。)cabal正在尝试安装aeson 0.8.0.2,由于某种原因需要text版本> = 1.1.1.0。

如果Chips是您自己的项目,您应该能够放宽aeson上的版本依赖性,以便可以安装与text 1.1.0.0兼容的旧版本。