Невозможно установить робота через кабальную установку
Я пытаюсь установить робота через Cabal Install.
Всякий раз, когда я пытаюсь установить робота через Cabal или после клонирования GIT-репо, я получаю следующее сообщение об ошибке.
Разрешение зависимостей... 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 из 61] Компиляция Graphics.XHB.Shared ( Graphics/XHB/Shared.hs, dist/build/Graphics/XHB/Shared.o) Graphics/XHB/Shared.hs:271:17: ошибка: неоднозначное вхождение 'putInt8' Это может относиться либо к 'Data.Binary.Put.putInt8', импортированному из 'Data.Binary.Put' в Graphics/XHB/Shared.hs:9:1-22 или 'Graphics.XHB.Shared.putInt8', определенный в Graphics/XHB/Shared.hs:309:1 Graphics/XHB/Shared.hs:275:19: ошибка: неоднозначное вхождение 'getInt8' Это может относиться либо к 'данным.Binary.Get.getInt8 ', импортированный из Data.Binary.Get в Graphics/XHB/Shared.hs:10:1-22 или' Graphics.XHB.Shared.getInt8 ', определенный в Graphics/XHB/Shared.hs:312:1 Graphics/XHB/Shared.hs:279:17: ошибка: неоднозначное вхождение 'putInt16host' Может относиться либо к Data.Binary.Put.putInt16host, импортированному из Data.Binary.Put в Graphics / XHB / Shar ed.hs: 9: 1-22 или 'Graphics.XHB.Shared.putInt16host', определенный в Graphics/XHB/Shared.hs:315:1 Graphics/XHB/Shared.hs:283:19: ошибка: неоднозначное вхождение ' getInt16host 'Это может относиться либо к' Data.Binary.Get.getInt16host ', импортированному из' Data.Binary.Get 'в Graphics/XHB/Shared.hs:10:1-22, либо к' Graphics.XHB.Shared.getInt16host ', определенный в Graphics/XHB/Shared.hs:318:1 Graphics/XHB/Shared.hs:287:17: ошибка: неоднозначное вхождение 'putInt32host' Это может относиться либо к 'Data.Binary.Put.putInt32host', импортированному из 'Data.Binary.Put' в Graphics/XHB/Shared.hs:9:1-22 или 'Graphics.XHB.Shared.putInt32host', определенный в Graphics/XHB/Shared.hs:321:1 Graphics/XHB/Shared.hs:291:19: ошибка: неоднозначное вхождение 'getInt32host' Может относиться либо к 'Data.Binary.Get.getInt32host', импортированному из 'Data.Binary.Get' в Graphics / XHB / Shared.hs: 10: 1 -22 или 'Graphics.XHB.Shared.getInt32host', определенный в Graphics/XHB/Shared.hs:324:1, клика: выход из каталога '/tmp/cabal-tmp-6435/xhb-0.6.2015.8.1' Не удалось устанавливать xhb-0.6.2015.8.1 cabal: Ошибка: не удалось установить некоторые пакеты: xhb-0.6.2015.8.1 не удалось на этапе сборки. Исключением было: ExitFailure 1
Может кто-нибудь, пожалуйста, наставьте меня, как поступить.
1 ответ
Итак, проблема в том, что binary-0.8 экспортирует множество примитивов, которые не выполнял двоичный код 0.7. Сравните http://hackage.haskell.org/package/binary-0.7.5.0/docs/Data-Binary-Put.html http://hackage.haskell.org/package/binary-0.8.5.1/docs/Data-Binary-Put.html.
+ putInt8 :: Int8 -> Put
+ putWord64be :: Word64 -> Put
+ putInt16be :: Int16 -> Put
...
В xhb
эти функции импортируются отдельно, что приводит к конфликту имен при использовании бинарного 0.8.
Самый безопасный способ решить эту проблему: forkxhb
, сделать import Data.Binary.{Put|Get}
импорт qualified
, а затем явно уточнить, из какого модуля вы хотите каждое использование putInt8
так далее..
После этого вы можете подать запрос на удаление.
Кроме того, вы можете выполнить установку, просто добавив ограничение binary < 0.8
, но это был бы просто обходной путь.
cabal install xhb --constraint="binary<0.8"
После xhb
установлен, установка robot
затем должен работать без проблем.