2017-09-17 4 views
1

Je souhaite utiliser la bibliothèque katip, version 0.5.0.0 dans un projet stack. (Le projet peut être trouvé here).Comment utiliser une version plus récente de la bibliothèque que le résolveur d'empilage est disponible

Malheureusement, mon fichier stack.yaml a le résolveur lts-6.4 qui télécharge katip-0.2.0.0.

Quelle est la bonne façon d'utiliser katip-0.5.0.0?

J'ai essayé de modifier mon fichier cabal à utiliser katip >= 0.5 && <0.6, mais quand je l'ai fait, je suis arrivé cette erreur:

In the dependencies for servant-persistent-0.2.0.0: katip-0.2.0.0 must match >=0.5 && <0.6 (latest applicable is 0.5.0.1)

+0

Pourquoi utilisez-vous 'lts-6.4'? Avec la pile vous devez choisir: soit tout ce qui est vieux ou tout ce qui est nouveau ... avec ce dernier étant presque toujours préférable. Si vous voulez mélanger les anciennes et les nouvelles dépendances de la bibliothèque, vous devrez jongler explicitement avec les 'extra-deps', mais à ce stade, vous pourriez facilement utiliser la bonne vieille installation de Cabal à la place. Ou plutôt, [bon _new_ Cabal-install] (http://blog.ezyang.com/2016/05/announcing-cabal-new-build-nix-style-local-builds/) ... – leftaroundabout

Répondre

3

Vous devez faire deux choses:

1) Modifier la cabale contrainte pour permettre la version plus récente de katib-à-dire:

katip >= 0.5 && < 0.6 

2) Modifier le fichier stack.yaml pour lui permettreCeci étant dit, sauf si vous avez une bonne raison - il est préférable de toujours utiliser un nouveau résolveur de stackage. La dernière en date est lts-9.5.

+0

Sibi, merci pour le commentaire. La raison pour laquelle je n'utilise pas un résolveur plus récent est que si je le fais, j'obtiens plus d'erreurs: 'Dans les dépendances pour servant-persistent-0.2.0.0: base-4.9.1.0 doit correspondre> = 4.7 && <4.9 (le dernier applicable est 4.8.2.0) serviteur-0.11 doit correspondre> = 0.7 && <0.8 (le plus tard applicable est 0.7.1) serviteur-js-0.9.3 doit correspondre> = 0.7 && <0.8 (le plus tard applicable est 0.7.1) serveur-serveur-0.11 doit correspondre> = 0.7 && <0.8 (le dernier applicable est 0.7.1) ' –

+1

@StevenL. On dirait que votre paquet cabal a des contraintes qui ne correspondent pas, donc ils devraient être modifiés si vous voulez les utiliser. Les paquets dans le résolveur sont tous compatibles les uns avec les autres. Une façon de voir rapidement si les choses se construisent encore en ignorant les contraintes est de passer '--allow-newer', qui ignore essentiellement les contraintes. – mgsloan