ghc-pkg和cabal有什么关系?

Ben*_*ver 32 haskell ghc cabal

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

他们的角色是什么 - 你何时使用一个,另一个,或同时使用两者?

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

Don*_*art 24

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

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.
Run Code Online (Sandbox Code Playgroud)

  • 不,那不是真的.在过去不好的时候,没有Cabal,我们用make记录了所有的包裹.'make register'脚本比比皆是.参见`ghc-pkg register` (3认同)

C. *_*ann 8

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

使用Cabal来安装软件包会为你注册ghc(除其他外),但实际上这就是重叠的程度.

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