2011-01-09 20 views
7

He instalado ghc 6.12.3, y luego la plataforma Haskell. Estoy intentando compilar un programa de prueba:ghc no puede encontrar mis paquetes cabal instalados

$ 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í, naturalmente, yo

cabal install Bindings 

que funciona muy bien, y coloca el paquete en ~/.cabal/lib/encuadernaciones-0.1. 2 El problema es que cuando voy a compilar de nuevo con ghc, todavía no encuentro el paquete que he instalado con cabal. compilación 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 agrego el .cabal a la lista de directorios de paquetes para buscar? ¡Gracias!

Respuesta

6

Puede verificar qué paquetes están instalados con ghc-pkg list. Puede ser que necesite especificar los paquetes a ghc con -package <pkgname> o creo que agregar --make activará una búsqueda de dependencias, incluidos los paquetes.

Editar: el paquete de enlaces es obsoleto, ver the hackage page. Este no es un problema de administración de paquetes, el único módulo disponible es Bindings.Deprecated, que puede cargar perfectamente, incluso si se trata de un módulo vacío. Creo que las partes relevantes se han descompuesto en bindings-<module>, por lo que si desea la funcionalidad de enlaces, debe consultar esos paquetes.

+0

ghc-list produce una lista de paquetes que incluye enlaces. Parece que el paquete está en desuso, por lo que no se encuentra. Agregar el argumento -package no ayudó. Probé algunos de los otros ejemplos que no usaron Bindings, y funcionaron bien, ¡así que me voy a obsesionar con otros problemas! :) Gracias por tu ayuda. – nont

2

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 globalmente, los paquetes locales se ignoran. El valor predeterminado para cabal-install se puede modificar editando el archivo de configuración.

Recibo el mismo error con el comando runhaskell. Usé el cabal en el directorio que tenía el archivo .cabal y pude resolver el error.

Cuestiones relacionadas