【问题标题】:Unable to install robot via cabal install无法通过 cabal install 安装机器人
【发布时间】:2017-04-11 11:51:30
【问题描述】:

我正在尝试通过 cabal install 安装 robot

每当我尝试通过 cabal 安装机器人或克隆 git repo 后,我都会收到以下错误消息。

解决依赖关系... cabal:进入目录'/tmp/cabal-tmp-6435/xhb-0.6.2015.8.1' 配置 xhb-0.6.2015.8.1... 构建 xhb-0.6.2015.8.1... 预处理库 xhb-0.6.2015.8.1... [ 1 of 61] 编译 Graphics.XHB.Shared ( Graphics/XHB/Shared.hs, dist/build/Graphics/XHB/Shared.o ) 图形/XHB/Shared.hs:271:17:错误: 模棱两可的出现‘putInt8’ 它可以指“Data.Binary.Put.putInt8”, 从 Graphics/XHB/Shared.hs:9:1-22 的“Data.Binary.Put”导入 或‘Graphics.XHB.Shared.putInt8’, 在 Graphics/XHB/Shared.hs:309:1 中定义 图形/XHB/Shared.hs:275:19:错误: 模棱两可的出现“getInt8” 它可以引用“Data.Binary.Get.getInt8”, 从 Graphics/XHB/Shared.hs:10:1-22 处的“Data.Binary.Get”导入 或‘Graphics.XHB.Shared.getInt8’, 在 Graphics/XHB/Shared.hs:312:1 中定义 图形/XHB/Shared.hs:279:17:错误: 模棱两可的出现“putInt16host” 它可以指“Data.Binary.Put.putInt16host”, 从 Graphics/XHB/Shared.hs:9:1-22 的“Data.Binary.Put”导入 或‘Graphics.XHB.Shared.putInt16host’, 在 Graphics/XHB/Shared.hs:315:1 中定义 图形/XHB/Shared.hs:283:19:错误: 模棱两可的出现“getInt16host” 它可以引用“Data.Binary.Get.getInt16host”, 从 Graphics/XHB/Shared.hs:10:1-22 处的“Data.Binary.Get”导入 或‘Graphics.XHB.Shared.getInt16host’, 在 Graphics/XHB/Shared.hs:318:1 中定义 图形/XHB/Shared.hs:287:17:错误: 模棱两可的出现‘putInt32host’ 它可以指“Data.Binary.Put.putInt32host”, 从 Graphics/XHB/Shared.hs:9:1-22 的“Data.Binary.Put”导入 或‘Graphics.XHB.Shared.putInt32host’, 在 Graphics/XHB/Shared.hs:321:1 中定义 图形/XHB/Shared.hs:291:19:错误: 模棱两可的出现“getInt32host” 它可以引用“Data.Binary.Get.getInt32host”, 从 Graphics/XHB/Shared.hs:10:1-22 处的“Data.Binary.Get”导入 或‘Graphics.XHB.Shared.getInt32host’, 在 Graphics/XHB/Shared.hs:324:1 中定义 cabal:离开目录'/tmp/cabal-tmp-6435/xhb-0.6.2015.8.1' 安装 xhb-0.6.2015.8.1 失败 cabal:错误:某些软件包无法安装: xhb-0.6.2015.8.1 在构建阶段失败。例外是: 退出失败 1

有人可以指导我如何进行。

【问题讨论】:

  • 显然有些兼容性问题。 xhb 似乎维护不足,实际上我没有看到任何迹象表明它曾经使用 GHC-8 进行过测试。你安装了basebinary的哪个版本?
  • 我已经安装了 base-4.9.1.0 和 binary-0.8.5.1

标签: haskell graphics cabal-install


【解决方案1】:

好的,所以问题是 binary-0.8 导出了大量 binary-0.7 没有的原语。比较 http://hackage.haskell.org/package/binary-0.7.5.0/docs/Data-Binary-Put.html#g:3http://hackage.haskell.org/package/binary-0.8.5.1/docs/Data-Binary-Put.html#g:3

+ putInt8 :: Int8 -> Put
+ putWord64be :: Word64 -> Put
+ putInt16be :: Int16 -> Put
...

xhb 中,这些函数是单独导入的,这在使用 binary-0.8 时会导致名称冲突。

解决这个问题的最安全方法:fork xhb,使import Data.Binary.{Put|Get} 导入qualified,然后明确说明您希望每次使用putInt8 等的模块来自哪个模块。

您可以在完成后提交拉取请求。

或者,您可以通过添加约束 binary < 0.8 来完成安装,但这只是一种解决方法。

cabal install xhb --constraint="binary<0.8"

安装xhb 后,robot 的安装应该可以顺利进行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多