2011-02-28 11 views
16

Come noto cabal è un programma per gestire l'installazione di pacchetti come Free2DD pkg_add. Ma c'è un altro strumento chiamato ghc-pkg. Non so perché ci sono due programmi diversi. Qual è il ruolo di ognuno di loro e come sono collegati?Come sono correlati i programmi `ghc-pkg` e` cabal`? (Haskell)

+0

duplicato di http://stackoverflow.com/questions/2706667/what-is-the-relationship-between-ghc-pkg-and-cabal – Boris

+0

@Boris È difficile capire perché non sono riuscito a trovarlo con il mio titolo ... – Eonil

+0

Sì, è strano. Sono molto simili. – Boris

risposta

12

Cabal è una libreria di edifici e di imballaggi per Haskell, una sorta di "autotools Haskell". Legge i file .cabal ei pacchetti Haskell di solito hanno un file Setup.hs che utilizza Cabal per creare il pacchetto. Poi c'è anche il comando cabal fornito dal pacchetto di installazione della cabala. Fornisce comandi per l'esecuzione dello script Setup.hs e alcune funzioni di gestione dei pacchetti, come l'installazione dei pacchetti direttamente da Hackage. Dovresti leggere this blogpost by Ivan Miljenovic che spiega abbastanza bene il ruolo di Cabal, cabal-install e Hackage.

ghc-pkg è uno strumento di livello inferiore per l'esecuzione del database dei pacchetti di GHC. La cabala è pensata per funzionare con ogni compilatore Haskell, mentre ghc-pkg è ovviamente specifico per GHC. Non puoi usare ghc-pkg per costruire nulla, puoi semplicemente registrare i pacchetti che hai costruito in altro modo.

2

cabal è solo uno strato di interfaccia per ghc-pkg con alcune funzionalità aggiunte. È importante sapere solo ghc-pkg perché la funzionalità di disinstallazione non è stata aggiunta alla cabal, ma può essere eseguita direttamente con ghc-pkg.

+1

ghc-pkg non può essere disinstallato. Probabilmente intendevi annullare la registrazione. E anche dopo l'annullamento della registrazione, posso ancora utilizzare il pacchetto non registrato correttamente. In quanto tale, non è una disinstallazione. –

Problemi correlati