Относительно того, как пакеты создаются, установили и использовали в Haskell, каковы отношения между ghc-pkg и интригой?
Каковы их роли - когда Вы использовали бы один по другому, или использовать обоих?
Они - дополнительные инструменты, конкурентоспособные инструменты или просто инструменты, которые делают различные работы?
Графически зависимости следующие:
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.
ghc-pkg - это прямой интерфейс к базе данных пакетов GHC. Cabal - это инструмент, который обеспечивает согласованную структуру распространения для пакетов и способ указать метаданные, такие как зависимости между пакетами, номера версий и информацию о сборке.
Использование Cabal для установки пакета приведет к его регистрации в ghc (среди прочего), но на самом деле это степень совпадения.
Обратите внимание, что ghc-pkg также предоставляет функции, которых (насколько мне известно) Cabal не предоставляет, например, скрытие установленных пакетов.