【问题标题】:How are `ghc-pkg` and `cabal` programs related? (Haskell)`ghc-pkg` 和 `cabal` 程序有什么关系? (哈斯克尔)
【发布时间】:2011-07-05 13:31:41
【问题描述】:

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

【问题讨论】:

标签: haskell relationship ghc cabal role


【解决方案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 无法卸载。你的意思可能是注销。即使注销后,我仍然可以正常使用未注册的包。因此,它不是卸载。
    猜你喜欢
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多