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