33

关于在 Haskell 中如何创建、安装和使用包,ghc-pkgcabal是什么关系?

他们的角色是什么——你什么时候使用一个,而不是另一个,或者两者都使用?

它们是互补的工具、竞争的工具,还是只是做不同工作的工具?

4

2 回答 2

25

从图形上看,依赖关系是:

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.
于 2010-04-25T02:40:46.420 回答
8

ghc-pkg是 GHC 包数据库的直接接口。Cabal 是一种工具,它为包提供一致的分发结构,并提供一种指定元数据的方法,例如包之间的依赖关系、版本号和构建信息。

使用 Cabal 安装一个包会为你注册 ghc (除其他外),但这就是重叠的程度,真的。

请注意,ghc-pkg 还提供了(据我所知)Cabal 没有的功能,例如隐藏已安装的软件包。

于 2010-04-25T00:22:23.687 回答