Как я знаю, cabal
- это программа для управления установкой пакетов, таких как FreeBSD pkg_add
.
Но есть еще один инструмент под названием ghc-pkg
. Я не знаю, почему существуют две разные программы. Какова роль каждого из них и как они связаны?
Как связаны программы "ghc-pkg" и "cabal"? (Haskell)
Ответ 1
Cabal - это библиотека для строительства и упаковки Haskell, своего рода "Haskell autotools". Он читает файлы .cabal
, а пакеты Haskell обычно имеют файл Setup.hs
, который использует Cabal для сборки пакета. Затем также имеется команда cabal
, предоставляемая пакетом инсталляции cabal. Он предоставляет команды для запуска Setup.hs
script и некоторые функции управления пакетами, такие как установка пакетов непосредственно из Hackage. Вы должны прочитать этот блог-почтой Иван Милехович, в котором очень хорошо объясняется роль Cabal, cabal-install и Hackage.
ghc-pkg
- это инструмент нижнего уровня для подкачки базы данных пакетов GHC. Cabal предназначен для работы с каждым компилятором Haskell, тогда как ghc-pkg явно специфичен для GHC. Вы не можете использовать ghc-pkg для сборки чего-либо, вы можете просто зарегистрировать пакеты, которые вы создали в противном случае.
Ответ 2
cabal - это всего лишь интерфейсный слой для ghc-pkg с некоторыми дополнительными функциями. Важно знать ghc-pkg, поскольку функциональность удаления не была добавлена в cabal, но может быть выполнена непосредственно с помощью ghc-pkg.