2011-01-09 1 views
7

Ich habe ghc 6.12.3 und dann die Haskell Platform installiert. Ich versuche, ein Testprogramm zu kompilieren:ghc kann meine cabal installierten Pakete nicht finden

$ ghc test.hs 
test.hs:3:0: 
    Failed to load interface for `Bindings': 
     Use -v to see a list of the files searched for. 

so, natürlich, ich

cabal install Bindings 

tun, der gut arbeitet, und das Paket in ~/.cabal/lib/Bindings-0.1. 2 Das Problem ist, dass wenn ich wieder mit ghc kompiliere, es das Paket, das ich mit cabal installiert habe, immer noch nicht finde. Compilierung im ausführlichen Modus gibt:

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 

Wie von einem anderen Benutzer vorgeschlagen Stackoverflow, habe ich versucht:

ghc-pkg describe rts > rts.pkg 
vi rts.pkg      # add the /home/ludflu/.cabal/lib to `library-dirs` field 
ghc-pkg update rts.pkg 

Aber ohne Erfolg. Wie füge ich die .cabal der Liste der zu durchsuchenden Paketverzeichnisse hinzu? Vielen Dank!

Antwort

6

Sie können überprüfen, welche Pakete mit ghc-pkg list installiert sind. Es kann sein, dass Sie entweder die Pakete ghc mit -package <pkgname> angeben müssen oder ich glaube, dass das Hinzufügen von --make dazu führt, dass Abhängigkeiten, einschließlich Pakete, gejagt werden.

Bearbeiten: die Bindungen Paket ist in der Tat veraltet, siehe the hackage page. Dies ist kein Paketverwaltungsproblem, das einzige verfügbare Modul ist Bindings.Deprecated, das Sie perfekt laden können, obwohl es ein leeres Modul ist. Ich glaube, dass die relevanten Teile in bindings-<module> ausgebrochen wurden, also wenn Sie die Bindungsfunktionalität wünschen, sollten Sie zu diesen Paketen schauen.

+0

ghc-list erzeugt eine Liste von Paketen, die Bindings enthalten. Es sieht so aus, als ob das Paket veraltet ist - so dass es nicht gefunden wird. Das Hinzufügen des Arguments -package hat nicht geholfen. Ich habe einige der anderen Beispiele ausprobiert, die Bindings nicht verwendet haben, und sie haben gut funktioniert, also werde ich mich auf andere Probleme besinnen! :) Danke für Ihre Hilfe. – nont

2

http://www.haskell.org/haskellwiki/Cabal-install

Eine Sache, besonders bewusst zu sein ist, dass die Pakete lokal durch Kabale standardmäßig installiert werden, während die

runhaskell Setup configure 
runhaskell Setup build 
runhaskell Setup install 

global installieren Standardbefehle. Wenn Sie ein Paket global installieren, werden die lokalen Pakete ignoriert. Der Standardwert für cabal-install kann durch Bearbeiten der Konfigurationsdatei geändert werden.

Ich bekam den gleichen Fehler mit dem runhaskell Befehl. Ich benutzte die Kabale in dem Verzeichnis, das die .cabal-Datei hatte und konnte den Fehler beheben.