16

据我所知cabal,这是一个管理安装包的程序,如 FreeBSD 的pkg_add. 但是还有另一个工具叫做ghc-pkg. 我不知道为什么有两个不同的程序。它们各自的作用是什么,它们之间有什么关系?

4

2 回答 2

12

Cabal 是 Haskell 的构建和打包库,是一种“Haskell 自动工具”。它读取.cabal文件,Haskell 包通常有一个Setup.hs使用 Cabal 构建包的文件。然后还有cabalcabal-install 软件包提供的命令。它提供了运行Setup.hs脚本的命令和一些包管理功能,比如直接从 Hackage 安装包。你应该阅读Ivan Miljenovic的这篇博文,它很好地解释了 Cabal、cabal-install 和 Hackage 的作用。

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

于 2011-02-28T08:43:46.410 回答
2

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

于 2011-02-28T07:13:23.680 回答