关于如何在Haskell中创建,安装和使用包,ghc-pkg和cabal之间的关系是什么?
他们的角色是什么 - 你何时使用一个,另一个,或同时使用它们?
它们是辅助工具,竞争工具,还是只是做不同工作的工具?
答案 0 :(得分: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.
答案 1 :(得分:8)
ghc-pkg是GHC包数据库的直接接口。 Cabal是一种为包提供一致的分发结构的工具,以及指定元数据的方法,例如包,版本号和构建信息之间的依赖关系。
使用Cabal安装软件包会为你注册ghc(除其他外),但实际上这就是重叠的程度。
请注意,ghc-pkg还提供(据我所知)Cabal没有的功能,例如隐藏已安装的软件包。