What is the relationship between ghc-pkg and cabal?

六月ゝ 毕业季﹏ 提交于 2019-12-03 04:46:02

问题


With respect to how packages are created, installed and used in Haskell, what is the relationship between ghc-pkg and cabal?

What are their roles - when would you use one, over the other, or use both?

Are they complementary tools, competitive tools, or simply tools that do different jobs?


回答1:


Graphically, the dependencies are:

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.



回答2:


ghc-pkg is a direct interface to GHC's package database. Cabal is a tool that provides a consistent distribution structure for packages and a way to specify metadata such as dependencies between packages, version numbers, and build information.

Using Cabal to install a package will register it with ghc for you (among other things), but that's the extent of the overlap, really.

Note that ghc-pkg also provides functionality that (as far as I know) Cabal doesn't, such as hiding installed packages.



来源:https://stackoverflow.com/questions/2706667/what-is-the-relationship-between-ghc-pkg-and-cabal

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!