`ghc-pkg` 和 `cabal` 程序有啥关系? (哈斯克尔)
Posted
技术标签:
【中文标题】`ghc-pkg` 和 `cabal` 程序有啥关系? (哈斯克尔)【英文标题】:How are `ghc-pkg` and `cabal` programs related? (Haskell)`ghc-pkg` 和 `cabal` 程序有什么关系? (哈斯克尔) 【发布时间】:2011-07-05 13:31:41 【问题描述】:据我所知,cabal
是一个用于管理软件包安装的程序,例如 FreeBSD 的 pkg_add
。
但是还有另一个工具叫做ghc-pkg
。我不知道为什么有两个不同的程序。它们各自的作用是什么?它们之间有什么关系?
【问题讨论】:
与***.com/questions/2706667/…重复 @Boris 很难理解为什么我的标题找不到它... 是的,这很奇怪。它们非常相似。 【参考方案1】:Cabal 是 Haskell 的构建和打包库,是一种“Haskell 自动工具”。它读取.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 来构建任何东西,你可以注册你已经构建的包。
【讨论】:
【参考方案2】:cabal 只是 ghc-pkg 的一个接口层,具有一些附加功能。知道 ghc-pkg 很重要,因为 cabal 没有添加卸载功能,但可以直接使用 ghc-pkg 完成。
【讨论】:
ghc-pkg 无法卸载。你的意思可能是注销。即使注销后,我仍然可以正常使用未注册的包。因此,它不是卸载。以上是关于`ghc-pkg` 和 `cabal` 程序有啥关系? (哈斯克尔)的主要内容,如果未能解决你的问题,请参考以下文章
通过 cabal (cabal-install) 在命令行中指定 ghc 选项,而无需编辑软件包的 .cabal 文件
在 Windows 上使用 cabal 安装 pango 和 GIO 时不可见 CULlong 类型的构造函数