Ошибка сборки GHC при попытке собрать библиотеку Cabal
Вопрос
Я пытаюсь собрать/установить Cabal в своей системе и сталкиваюсь со следующей ошибкой зависимости:
SDGL0990Z464C:Cabal-1.8.0.4 cflynn$ ghc --make Setup
SDGL0990Z464C:Cabal-1.8.0.4 cflynn$ ./Setup configure
Configuring Cabal-1.8.0.4...
Setup: At least the following dependencies are missing:
base >=4 && <3 && >=1 && <5, filepath >=1 && <1.2
У меня установлен GHC 7.0.1, насколько я знаю, GHC 6.6.1 и более поздние версии поставляются с пакетом filepath?И мне неясно, о какой именно «базе» идет речь?
Решение
GHC поставляется с определенным набором уже установленных библиотек.Когда вы запускаете приведенную выше команду сборки, Cabal хочет «переустановить» некоторые старые версии библиотек, поставляемых с GHC.Это плохо по понятным причинам.
Если вам действительно нужно это сделать, возможно, стоит использовать cabal-dev
вместо Cabal
.Кстати, используя Setup.hs
вызывает версию Cabal
библиотека, поставляемая с вашим компилятором, где при запуске cabal
команда вызывает cabal-install
программа.
cabal-dev
является оберткой вокруг cabal-install
(и поэтому Cabal
библиотека), которая предоставляет изолированные сборки.Обеспечение безопасности установки программ, которым требуются разные версии библиотек, поставляемых с GHC.Остается вопрос, будут ли эти старые библиотеки построены на базе более новой GHC.Во многих случаях сборка завершится неудачно.
Я настоятельно рекомендую вам использовать cabal-dev
для ежедневного создания пакетов вместо cabal-install
.Преимущества песочницы многочисленны, и они значительно перевешивают риск cabal-install
повреждение базы данных пакетов путем обновления пакета где-то в середине цепочки зависимостей для того, что вы уже установили.
Для получения дополнительной информации об использовании cabal-dev
, я рекомендую это пост на реддите.
base
представляет собой набор модулей Haskell, которые предоставляют большую часть функциональности, поставляемой с каждой установкой GHC.Это коллекция полезных библиотек, которые понадобятся большинству пользователей Haskell.