GHC ne peut pas trouver mes cabale paquets installés
Question
J'ai installé GHC 6.12.3, puis la plate-forme Haskell. Je suis en train de compiler un programme de test:
$ ghc test.hs
test.hs:3:0:
Failed to load interface for `Bindings':
Use -v to see a list of the files searched for.
Alors, naturellement, je fais
cabal install Bindings
Ce qui fonctionne très bien, et place le paquet dans ~ / .cabal / lib / liaisons-0.1.2 Le problème est que quand je vais compiler à nouveau avec GHC, il ne trouve toujours pas le paquet que j'ai installé avec cabale. la compilation en mode verbose donne:
ghc -v test.hs
Using binary package database: /home/ludflu/ghc/lib/ghc-6.12.3/package.conf.d/package.cache
Using binary package database: /home/ludflu/.ghc/x86_64-linux 6.12.3/package.conf.d/package.cache
Comme suggéré par un autre utilisateur stackoverflow, j'ai essayé:
ghc-pkg describe rts > rts.pkg
vi rts.pkg # add the /home/ludflu/.cabal/lib to `library-dirs` field
ghc-pkg update rts.pkg
Mais en vain. Comment ajouter le .cabal à la liste des répertoires de paquets pour rechercher? Je vous remercie!
La solution
Vous pouvez vérifier quels paquets sont installés avec ghc-pkg list
. Il se peut que vous devez soit spécifier les packages à ghc
avec -package <pkgname>
ou je crois ajouter à --make
déclenchera une pourchassant des dépendances, y compris les paquets.
Modifier le package liaisons est obsolète en effet, voir la Page hackage . Ce n'est pas un problème de gestion des paquets, le seul module disponible est Bindings.Deprecated
, que vous êtes parfaitement capable de charger, même si elle est un module vide. Je crois que les parties concernées ont été éclaté en bindings-<module>
, donc si vous voulez que la fonctionnalité bindings vous devriez regarder ces paquets.
Autres conseils
http://www.haskell.org/haskellwiki/Cabal-install
Une chose à être conscient surtout de, est que les paquets sont installés localement par défaut par cabale, alors que les commandes
runhaskell Setup configure
runhaskell Setup build
runhaskell Setup install
installer globalement par défaut. Si vous installez un package globalement, les paquets locaux sont ignorés. La valeur par défaut pour cabale installation peut être modifié en éditant le fichier de configuration.
Je recevais la même erreur avec la commande runhaskell
. J'ai utilisé la cabale dans le répertoire qui a le fichier .cabal et a pu résoudre l'erreur.