据我所知,cabal
是一种像FreeBSD的pkg_add
一样管理软件包安装的程序。
但是还有一个名为ghc-pkg
的工具。我不知道为什么会有两个不同的程序。它们各自扮演什么角色,又有什么关联呢?
据我所知,cabal
是一种像FreeBSD的pkg_add
一样管理软件包安装的程序。
但是还有一个名为ghc-pkg
的工具。我不知道为什么会有两个不同的程序。它们各自扮演什么角色,又有什么关联呢?
Cabal是Haskell的一个构建和打包库,类似于“Haskell自动化工具”。它读取 .cabal
文件,Haskell软件包通常有一个名为 Setup.hs
的文件,该文件使用Cabal来构建软件包。同时,cabal-install
软件包提供了 cabal
命令。它提供运行 Setup.hs
脚本以及一些包管理功能,例如直接从 Hackage 安装包。您应该阅读 Ivan Miljenovic 的这篇博客文章,它很好地解释了 Cabal、cabal-install 和 Hackage 的作用。
ghc-pkg
是用于操作 GHC 包数据库的低级别工具。Cabal旨在与每个Haskell编译器一起使用,而 ghc-pkg 显然专门针对GHC。您无法使用 ghc-pkg 来构建任何内容,只能注册已经构建好的软件包。
cabal只是一个接口层,用于扩展ghc-pkg的功能。了解ghc-pkg很重要,因为cabal没有添加卸载功能,但可以直接使用ghc-pkg进行操作。