Использование Cabal (Haskell) - PullRequest
       23

Использование Cabal (Haskell)

8 голосов
/ 06 ноября 2010

У Кабала проблемы с зависимостью постоянно .Это действительно утомительно.До сих пор я пытался заставить многие вещи работать, вот моя попытка установить оснастку:

$ 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.*

У меня есть похожие проблемы при установке Happstack и т. Д. Какова процедура, чтобы заставить cabal ... работать?Я уже пробовал:

export PATH=/home/user/.cabal/bin:$PATH

1 Ответ

7 голосов
/ 07 ноября 2010

Проблема в том, что snap-server-0.2.15 имеет неограниченную зависимость от monads-fd.Самая последняя версия, monads-fd-0.1.0.3, требует mtl-2. * К сожалению, это конфликтует с зависимостью от ListLike (через iteratee), которая требует mtl <2.0.Оба эти ограничения не могут быть выполнены одновременно, поэтому клика сдается. </p>

Попробуйте запустить cabal install snap-server --constrain="monads-fd=0.1.0.2".Это заставит более раннюю версию monads-fd, которая не требует mtl, и я думаю, что все будет работать правильно.

Если у вас проблемы с большим количеством пакетов, это, вероятно, связано с новым mtl, который был недавно загружен.Вы можете попробовать добавить --constrain="mtl<2", что может помочь.

Мораль для сопровождающих: следуйте PVP на Haskell и всегда используйте верхние границы зависимостей.

NB Даже если я это сделаюзагрузите новый ListLike, который работает с mtl-2 (что я сделаю очень скоро), это не решит вашу проблему, потому что новый ListLike не будет выбран из-за верхней границы для iteratee.

...