2010-04-25 9 views
30

In Bezug darauf, wie Pakete in Haskell erstellt, installiert und verwendet werden, wie ist die Beziehung zwischen ghc-pkg und cabal?Was ist die Beziehung zwischen ghc-pkg und cabal?

Was sind ihre Rollen - wann würdest du eins benutzen, über das andere, oder beide benutzen?

Sind sie komplementäre Werkzeuge, wettbewerbsfähige Werkzeuge oder einfach Werkzeuge, die verschiedene Aufgaben erfüllen?

Antwort

23

Grafisch die Abhängigkeiten sind:

Packages GHC can use 
    | 
Are registered with "ghc-pkg register" 
    | 
And (almost always) built with Cabal 
    | 
With build dependencies resolved by cabal-install 
    | 
From Hackage. 
+0

Ist es wahr, dann, dass jedes Paket registrierbar mit ghc-pkg mit Cabal gebaut worden sein? –

+3

Nein, das stimmt nicht. In der schlechten alten Zeit gab es keine Cabal, und wir registrierten alle unsere Pakete mit make. 'make register'-Skripte sind reichlich vorhanden. Siehe 'ghc-pkg register' –

8

ghc-pkg ist eine direkte Schnittstelle zur GHC-Paketdatenbank. Cabal ist ein Tool, das eine konsistente Verteilungsstruktur für Pakete und eine Möglichkeit bietet, Metadaten wie Abhängigkeiten zwischen Paketen, Versionsnummern und Build-Informationen anzugeben.

Mit Cabal, um ein Paket zu installieren, wird es für Sie mit ghc registrieren (unter anderem), aber das ist das Ausmaß der Überlappung, wirklich.

Beachten Sie, dass ghc-pkg bietet auch Funktionen, die (soweit ich weiß) Cabal nicht, wie zum Beispiel versteckte Pakete versteckt.

Verwandte Themen