2010-11-06 22 views
8

Cabal a des problèmes de dépendance constamment. C'est vraiment fatigant. Jusqu'à présent, je l'ai essayé de me beaucoup de choses à travailler, voici mon essayant d'installer pression:Utilisation de la cabine (Haskell)

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

J'ai des problèmes similaires installation Happstack, etc. Quelle est la procédure pour faire cabale ... travailler? Je l'ai déjà essayé:

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

Répondre

7

Le problème est que le composant logiciel enfichable serveur 0.2.15 a une dépendance sur monades sans bornes fd. La version la plus récente, monads-fd-0.1.0.3, nécessite mtl-2. * Malheureusement, ceci est en conflit avec la dépendance de ListLike (via iteratee), qui nécessite mtl < 2.0. Ces deux contraintes ne peuvent pas être remplies simultanément, donc la cabale abandonne.

Essayez d'exécuter cabal install snap-server --constrain="monads-fd=0.1.0.2". Cela forcera une version antérieure de monads-fd qui ne nécessite pas mtl, et je pense que tout fonctionnera correctement.

Si vous rencontrez des problèmes avec beaucoup de paquets, c'est probablement dû au nouveau mtl qui a été récemment téléchargé. Vous pouvez essayer d'ajouter --constrain="mtl<2", ce qui pourrait aider. Morale aux mainteneurs: suivre le PVP Haskell et toujours utiliser les limites de dépendances supérieures.

N.B. Même si je télécharge un nouveau ListLike qui fonctionne avec mtl-2 (ce que je ferai très bientôt), cela ne résoudra pas votre problème car le nouveau ListLike ne sera pas sélectionné en raison de la limite supérieure sur iteratee.

+0

"Même si je télécharge un nouveau ListLike ..., cela ne résoudra pas votre problème" Moral: n'utilisez jamais de limite supérieure. Joke :) On dirait que nous avons besoin de quelque chose de plus stable que le hackage et moins stable que HP. Quelque chose entre. – Yuras

+1

@Yuras, je suis d'accord (et j'ai réalisé que les limites supérieures empêché une solution pendant que je tapais). Si le piratage exigeait des limites supérieures sur tout, cela améliorerait grandement la stabilité. Plus je travaille avec les numéros de version et de cabale, plus je suis convaincu que les autotools ont bien compris. –

+0

Yikes, cabal nécessite beaucoup de connaissances sur les paquets à utiliser! Cela me rend triste :-( – 0atman