GHC no puede encontrar mis paquetes instalados Cabal
Pregunta
He instalado GHC 6.12.3, y luego la Plataforma Haskell. Estoy intentando compilar un programa de prueba:
$ ghc test.hs
test.hs:3:0:
Failed to load interface for `Bindings':
Use -v to see a list of the files searched for.
Así que, naturalmente, tengo
cabal install Bindings
Lo que funciona bien, y coloca el paquete en ~ / lib .cabal Es decir, que cuando voy a compilar de nuevo con GHC, que sigue sin encontrar el paquete que ha instalado el problema / / encuadernaciones-0.1.2 con Cabal. compilar en modo detallado da:
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
Como se sugiere por otro usuario stackoverflow, he intentado:
ghc-pkg describe rts > rts.pkg
vi rts.pkg # add the /home/ludflu/.cabal/lib to `library-dirs` field
ghc-pkg update rts.pkg
Pero fue en vano. ¿Cómo añado el .cabal a la lista de directorios de paquete para buscar? ¡Gracias!
Solución
Se puede comprobar qué paquetes se instalan con ghc-pkg list
. Puede ser que usted necesita para especificar los paquetes a ghc
con -package <pkgname>
o cree que la adición de --make
dará lugar a una persiguiendo a las dependencias, incluyendo paquetes.
Editar el paquete fijaciones es obsoleta en efecto, ver la hackage. Este no es un problema de gestión de paquetes, el único módulo disponible es Bindings.Deprecated
, que son perfectamente capaces de carga, a pesar de que es un módulo vacío. Creo que las partes pertinentes se han estallado en bindings-<module>
, así que si quieres la funcionalidad fijaciones que debe buscar a esos paquetes.
Otros consejos
http://www.haskell.org/haskellwiki/Cabal-install
Una cosa a tener especialmente en cuenta, es que los paquetes están instalados localmente de forma predeterminada por Cabal, mientras que los comandos
runhaskell Setup configure
runhaskell Setup build
runhaskell Setup install
instalar a nivel mundial por defecto. Si instala un paquete global, los paquetes locales se ignoran. El valor por defecto para el cabal a instalar se puede modificar mediante la edición del archivo de configuración.
Me estaba el mismo error con el comando runhaskell
. He utilizado la cábala en el directorio que tenía el archivo .cabal y fue capaz de resolver el error.