可以找到相同的(基本上)问题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
的一个版本,因为我需要parsec
和JuicyPixels-repa
。
ghci抛出错误
GHCi runtime linker: fatal error: I found a duplicate definition for symbol
_fps_count
关于bytestring
包。
有没有办法尽管可以使用ghci
?
答案 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来最大限度地减少此类头痛的发生频率。