utilisation Cabal (Haskell)
-
29-09-2019 - |
Question
Cabal a des problèmes de dépendance en permanence . Il est vraiment fatiguant. Jusqu'à présent, j'ai essayé de faire beaucoup de choses à travailler, voici mon essayant d'installer composant logiciel enfichable:
$ 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 installe Happstack, etc. Quelle est la procédure pour faire cabale ... le travail? Je l'ai déjà essayé:
export PATH=/home/user/.cabal/bin:$PATH
La solution
Le problème est que snap-server-0.2.15 a une dépendance non bornée sur monades-fd. La version la plus récente, monades-fd-0.1.0.3, exige mtl-2. * Malheureusement, ce conflit avec la dépendance ListLike (via iteratee), ce qui nécessite mtl <2.0. Ces deux contraintes ne peuvent pas être remplies simultanément, donc cabale abandonne.
Essayez de lancer cabal install snap-server --constrain="monads-fd=0.1.0.2"
. Cela forcera une version antérieure de monades-fd qui ne nécessite pas mtl, et je pense que tout fonctionne correctement.
Si vous rencontrez des problèmes avec beaucoup de paquets, il est probablement dû à la nouvelle mtl
qui a été récemment téléchargé. Vous pouvez essayer d'ajouter --constrain="mtl<2"
, ce qui pourrait aider.
Moral à mainteneurs. Suivre la PVP Haskell et toujours utiliser des bornes de dépendance supérieure
N.B.. Même si je télécharger une nouvelle ListLike qui fonctionne avec mtl-2 (que je vais le faire très bientôt), qui ne résoudra pas votre problème, car le nouveau ListLike ne sera pas sélectionné en raison de la limite supérieure iteratee.