无法通过cabal安装来安装机器人

时间:2017-04-11 11:51:31

标签: haskell graphics cabal-install

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

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

Resolving dependencies...
cabal: Entering directory '/tmp/cabal-tmp-6435/xhb-0.6.2015.8.1'
Configuring xhb-0.6.2015.8.1...
Building xhb-0.6.2015.8.1...
Preprocessing library xhb-0.6.2015.8.1...
[ 1 of 61] Compiling Graphics.XHB.Shared ( Graphics/XHB/Shared.hs, dist/build/Graphics/XHB/Shared.o )

Graphics/XHB/Shared.hs:271:17: error:
    Ambiguous occurrence ‘putInt8’
    It could refer to either ‘Data.Binary.Put.putInt8’,
                             imported from ‘Data.Binary.Put’ at Graphics/XHB/Shared.hs:9:1-22
                          or ‘Graphics.XHB.Shared.putInt8’,
                             defined at Graphics/XHB/Shared.hs:309:1

Graphics/XHB/Shared.hs:275:19: error:
    Ambiguous occurrence ‘getInt8’
    It could refer to either ‘Data.Binary.Get.getInt8’,
                             imported from ‘Data.Binary.Get’ at Graphics/XHB/Shared.hs:10:1-22
                          or ‘Graphics.XHB.Shared.getInt8’,
                             defined at Graphics/XHB/Shared.hs:312:1

Graphics/XHB/Shared.hs:279:17: error:
    Ambiguous occurrence ‘putInt16host’
    It could refer to either ‘Data.Binary.Put.putInt16host’,
                             imported from ‘Data.Binary.Put’ at Graphics/XHB/Shared.hs:9:1-22
                          or ‘Graphics.XHB.Shared.putInt16host’,
                             defined at Graphics/XHB/Shared.hs:315:1

Graphics/XHB/Shared.hs:283:19: error:
    Ambiguous occurrence ‘getInt16host’
    It could refer to either ‘Data.Binary.Get.getInt16host’,
                             imported from ‘Data.Binary.Get’ at Graphics/XHB/Shared.hs:10:1-22
                          or ‘Graphics.XHB.Shared.getInt16host’,
                             defined at Graphics/XHB/Shared.hs:318:1

Graphics/XHB/Shared.hs:287:17: error:
    Ambiguous occurrence ‘putInt32host’
    It could refer to either ‘Data.Binary.Put.putInt32host’,
                             imported from ‘Data.Binary.Put’ at Graphics/XHB/Shared.hs:9:1-22
                          or ‘Graphics.XHB.Shared.putInt32host’,
                             defined at Graphics/XHB/Shared.hs:321:1

Graphics/XHB/Shared.hs:291:19: error:
    Ambiguous occurrence ‘getInt32host’
    It could refer to either ‘Data.Binary.Get.getInt32host’,
                             imported from ‘Data.Binary.Get’ at Graphics/XHB/Shared.hs:10:1-22
                          or ‘Graphics.XHB.Shared.getInt32host’,
                             defined at Graphics/XHB/Shared.hs:324:1
cabal: Leaving directory '/tmp/cabal-tmp-6435/xhb-0.6.2015.8.1'
Failed to install xhb-0.6.2015.8.1
cabal: Error: some packages failed to install:
xhb-0.6.2015.8.1 failed during the building phase. The exception was:
ExitFailure 1


有人可以指导我如何继续。

1 个答案:

答案 0 :(得分:1)

好的,问题是binary-0.8导出了很多基元-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的安装应该可以正常运行。