【问题标题】:This package indirectly depends on multiple versions... prevents use of ghci这个包间接依赖多个版本...阻止使用ghci
【发布时间】:2014-03-14 18:51:02
【问题描述】:

可以在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

【问题讨论】:

  • 您可以下载软件包的源代码,将.cabal 文件更改为使用适当版本的bytestring,然后以这种方式从源代码安装。
  • @bheklilr 这太恶心了。 :D 但这将是我最后的手段,谢谢!

标签: haskell ghc cabal ghci


【解决方案1】:

我假设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,将此类头痛的频率降至最低。

【讨论】:

    猜你喜欢
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-21
    • 2014-12-18
    相关资源
    最近更新 更多