这个包间接依赖于多个版本...阻止使用ghci

时间:2014-03-14 18:51:03

标签: haskell ghc cabal ghci

可以找到相同的(基本上)问题here,但我正在寻找当前问题的具体答案(与链接中的一般答案相反)。

我在使用Haskell和cabal时遇到问题,因为我的项目取决于两个不同版本的bytestring。该项目仍在运行 - 但它阻止我使用ghci,这种情况很糟糕。

以下是错误消息:

 |package. This is highly likely to cause a compile failure.
 |package text-0.11.3.1 requires bytestring-0.10.0.2
 |package stb-image-0.2.1 requires bytestring-0.10.0.2
 |package parsec-3.1.5 requires bytestring-0.10.0.2
 |package bitmap-0.0.2 requires bytestring-0.10.0.2
 |package zlib-0.5.4.1 requires bytestring-0.10.4.0
 |package unix-2.7.0.0 requires bytestring-0.10.4.0
 |package repa-3.2.3.3 requires bytestring-0.10.4.0
 |package daimyo-0.1.0.0 requires bytestring-0.10.4.0
 |package binary-0.7.1.0 requires bytestring-0.10.4.0
 |package JuicyPixels-repa-0.7 requires bytestring-0.10.4.0
 |package JuicyPixels-3.1.3.2 requires bytestring-0.10.4.0

我无法将我的套餐隔离到bytestring的一个版本,因为我需要parsecJuicyPixels-repa

ghci抛出错误

GHCi runtime linker: fatal error: I found a duplicate definition for symbol
    _fps_count

关于bytestring包。

有没有办法尽管可以使用ghci

1 个答案:

答案 0 :(得分:4)

我认为daimyo是你的项目。既然如此,您的问题是cabal file中的版本限制太严格了。特别是,bytestring约束应该是bytestring == 0.10.*,因此该包与bytestring-0.10.0.2一起使用,这可能与您的Haskell平台或同等版本一起提供。应该没有不兼容性,因为根据package versioning policy,版本的两个第一部分相同意味着API是兼容的。

至于实际使其工作,您必须取消注册新的bytestring包(ghc-pkg unregister bytestring-0.10.4.0)和依赖它的所有包,然后重新安装这些包(bytestring除外)当然)。之后,您可以使用Cabal 1.18(cabal install cabal-install,如果您没有)及其sandboxes来最大限度地减少此类头痛的发生频率。