Какая связь между ghc-pkg и cabal? - PullRequest
32 голосов
/ 25 апреля 2010

Что касается того, как пакеты создаются, устанавливаются и используются в Haskell, какова связь между ghc-pkg и cabal ?

Каковы их роли - когда бы вы использовали один, поверх другого или оба?

Являются ли они дополнительными инструментами, конкурентными инструментами или просто инструментами, выполняющими различную работу?

Ответы [ 2 ]

24 голосов
/ 25 апреля 2010

Графически зависимости:

Packages GHC can use
    | 
Are registered with "ghc-pkg register"
    |
And (almost always) built with Cabal
    |
With build dependencies resolved by cabal-install
    |
From Hackage.
8 голосов
/ 25 апреля 2010

ghc-pkg - это прямой интерфейс к базе данных пакетов GHC. Cabal - это инструмент, обеспечивающий согласованную структуру распространения пакетов и способ указания метаданных, таких как зависимости между пакетами, номерами версий и информацией о сборке.

Использование Cabal для установки пакета зарегистрирует его в ghc для вас (помимо всего прочего), но на самом деле это степень перекрытия.

Обратите внимание, что ghc-pkg также предоставляет функциональные возможности, которые (насколько я знаю), которых нет у Cabal, например скрытие установленных пакетов.

...