2011-02-28 22 views
16

Como sé cabal es un programa para administrar la instalación de paquetes como FreeBSD pkg_add. Pero hay otra herramienta llamada ghc-pkg. No sé por qué hay dos programas diferentes. ¿Cuál es el papel de cada uno de ellos y cómo están relacionados?¿Cómo se relacionan los programas `ghc-pkg` y` cabal`? (Haskell)

+0

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

+0

@Boris Es difícil entender por qué no pude encontrarlo con mi title ... – Eonil

+0

Sí, eso es extraño. Son muy similares. – Boris

Respuesta

12

Cabal es una biblioteca de construcción y embalaje para Haskell, tipo de "Haskell autotools". Lee los archivos .cabal y los paquetes Haskell generalmente tienen un archivo Setup.hs que usa Cabal para compilar el paquete. Luego también está el comando cabal provisto por el paquete cabal-install. Proporciona comandos para ejecutar el script Setup.hs y algunas funciones de administración de paquetes, como instalar paquetes directamente desde Hackage. Debería leer this blogpost by Ivan Miljenovic que explica bastante bien el papel de Cabal, cabal-install y Hackage.

ghc-pkg es una herramienta de nivel inferior para examinar la base de datos de paquetes de GHC. Cabal tiene la intención de funcionar con cada compilador Haskell, mientras que ghc-pkg es obviamente específico para GHC. No puede usar ghc-pkg para compilar nada, solo puede registrar paquetes que haya creado de otra manera.

2

cabal es solo una capa de interfaz para ghc-pkg con algunas características adicionales. Solo es importante saber ghc-pkg porque la funcionalidad de desinstalación no se agregó a cabal, pero se puede hacer directamente con ghc-pkg.

+1

ghc-pkg no se puede desinstalar. Probablemente querías eliminar el registro. E incluso después de anular el registro, aún puedo usar el paquete no registrado bien. Como tal, no es una desinstalación. –

Cuestiones relacionadas