Использование кабины (Хаскелл)
-
29-09-2019 - |
Вопрос
У Cabal есть проблемы на зависимостью постоянно. Отказ Это действительно утомительно. До сих пор я пытался заставить многое работать, вот я пытаюсь установить Snap:
$ sudo cabal install snap-server Resolving dependencies... cabal: cannot configure ListLike-1.1.0. It requires mtl >=1.1.0 && 1.2 For the dependency on mtl >=1.1.0 && 1.2 there are these packages: mtl-1.1.0.0, mtl-1.1.0.1, mtl-1.1.0.2 and mtl-1.1.1.0. However none of them are available. mtl-1.1.0.0 was excluded because mtl-2.0.0.0 was selected instead mtl-1.1.0.0 was excluded because monads-fd-0.1.0.3 requires mtl ==2.* mtl-1.1.0.1 was excluded because mtl-2.0.0.0 was selected instead mtl-1.1.0.1 was excluded because monads-fd-0.1.0.3 requires mtl ==2.* mtl-1.1.0.2 was excluded because mtl-2.0.0.0 was selected instead mtl-1.1.0.2 was excluded because monads-fd-0.1.0.3 requires mtl ==2.* mtl-1.1.1.0 was excluded because mtl-2.0.0.0 was selected instead mtl-1.1.1.0 was excluded because monads-fd-0.1.0.3 requires mtl ==2.*
У меня есть подобные проблемы, устанавливающие Happ Stack и т. Д. Что такое процедура, чтобы сделать Cabal ... работать? Я уже пробовал:
export PATH=/home/user/.cabal/bin:$PATH
Решение
Проблема в том, что Snap-Server-0.2.15 имеет неограниченную зависимость от Monads-FD. Самая последняя версия, Monads-FD-0.1.0.3, требует MTL-2.* К сожалению, это противоречит зависимости от списка (через Itearte), который требует MTL <2.0. Обе эти ограничения не могут быть выполнены одновременно, поэтому Кабал сдается.
Попробуйте бежать cabal install snap-server --constrain="monads-fd=0.1.0.2"
. Отказ Это заставит более раннюю версию Monads-FD, которая не требует MTL, и я думаю, что все будет работать должным образом.
Если у вас проблемы с большим количеством пакетов, это, вероятно, из-за нового mtl
Это было недавно загружено. Вы можете попробовать добавить --constrain="mtl<2"
, что может помочь.
Мораль для сопровождающих: следуйте PVP Haskell и всегда Используйте границы верхней зависимости.
NB, даже если я загружу новый список, который работает с MTL-2 (который я сделаю очень скоро), что не исправит вашу проблему, потому что новый список не будет выбран из-за верхней границы по итерации.