2015-07-13 10 views
5

Ich habe mich entschieden zu versuchen, Stack einen Schuss zu geben. Ich habe es installiert und verwendet, um die neueste Version von Ghc zu installieren. Ich habe Stapel verwendet, um einige Pakete zu installieren, aber die Pakete sind für ghc nicht sichtbar, und wenn ich Pakete mit ghc-pkg aufliste, sehe ich, dass die Pakete, die ich über Stapel installiert habe, nicht da sind. Warum ist das? Missverstehe ich den Zweck des Stapels?Warum werden Pakete nicht zur ghc-Paketdatenbank hinzugefügt?

Antwort

7

Stack berührt niemals die globale Paketdatenbank. Es verwendet geschichteten Datenbank Ansatz

  1. globale Datenbank - unberührt
  2. Pakete im stackage Snapshot in Snapshot-Datenbank installiert werden
  3. andere Pakete werden vor Ort pro Projekt

So anstelle von umweltschädlichen globale Datenbank installiert Die meisten Pakete werden in Snapshot-Datenbanken installiert, sodass die meisten Pakete gemeinsam genutzt werden können. Da Pakete in Stack-Snapshots kompatibel sind (d. H. Immer zusammen kompilieren), stoßen wir nicht auf Cabal hell.

Sie können stack ghci oder stack ghc verwenden, um entsprechende Befehle mit konfigurierter Paketdatenbank auszuführen.

Die genauere Erklärung ist in der stack wiki