2010-04-25 8 views
30

Con respecto a cómo se crean, instalan y utilizan los paquetes en Haskell, ¿cuál es la relación entre ghc-pkg y cabal?¿Cuál es la relación entre ghc-pkg y cabal?

¿Cuáles son sus roles? ¿Cuándo usaría uno, sobre el otro, o usaría ambos?

¿Son herramientas complementarias, herramientas competitivas o simplemente herramientas que hacen trabajos diferentes?

Respuesta

23

Gráficamente, las dependencias son:

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

¿Es cierto entonces que cualquier paquete registrable con GHC-paquete debe de haber sido construido con Cabal? –

+3

No, eso no es cierto. En los malos viejos tiempos no había Cabal, y registramos todos nuestros paquetes con marca. los guiones 'make register' abundaban Ver 'ghc-pkg register' –

8

ghc-pkg es una interfaz directa a la base de datos de paquetes de GHC. Cabal es una herramienta que proporciona una estructura de distribución consistente para paquetes y una forma de especificar metadatos, como dependencias entre paquetes, números de versión e información de compilación.

El uso de Cabal para instalar un paquete lo registrará con ghc (entre otras cosas), pero ese es el alcance de la superposición, en realidad.

Tenga en cuenta que ghc-pkg también proporciona una funcionalidad que (hasta donde yo sé) Cabal no lo hace, como ocultar paquetes instalados.

Cuestiones relacionadas