`ghc-pkg`和`cabal`程序如何相关? (Haskell的)

时间:2011-02-28 06:28:46

标签: haskell relationship ghc cabal role

据我所知,cabal是一个管理FreeBSD pkg_add等软件包安装的程序。 但还有另一个名为ghc-pkg的工具。我不知道为什么有两个不同的程序。他们每个人的角色是什么以及他们如何相关?

2 个答案:

答案 0 :(得分:12)

Cabal是Haskell的构建和打包库,类似于“Haskell autotools”。它读取.cabal个文件,Haskell包通常有一个文件Setup.hs,它使用Cabal来构建包。然后还有cabal-install软件包提供的cabal命令。它提供了运行Setup.hs脚本和一些包管理功能的命令,比如直接从Hackage安装包。你应该阅读this blogpost by Ivan Miljenovic,它很好地解释了Cabal,cabal-install和Hackage的作用。

ghc-pkg是一个用于戳GHC包数据库的低级工具。 Cabal旨在与每个Haskell编译器一起使用,而ghc-pkg显然特定于GHC。你不能使用ghc-pkg来构建任何东西,你可以只注册你已经构建的包。

答案 1 :(得分:2)

cabal只是ghc-pkg的一个界面层,具有一些附加功能。了解ghc-pkg非常重要,因为卸载功能未添加到cabal,但可以直接使用ghc-pkg完成。