2010-12-10 4 views
0

Я пытаюсь построить/установить Cabal на моей системе, и я бегу в следующее сообщение об ошибке зависимостей:GHC построить ошибку при попытке построить 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? И я не совсем понимаю, на что именно ссылается «база»?

+0

У GHC-7.0.1 уже есть Cabal-1.10.0.0, вы не хотите понижать его, поскольку он близок к этой версии GHC. Вы действительно хотите, чтобы каббал-инсталляция? Я думаю, вам нужно подождать, пока не будет выпущена новая версия, в ближайшее время должна появиться новая версия (в этом месяце), как это необходимо для кандидата на выпуск следующей версии платформы. –

+0

@stephen, если cabal поставляется с GHC, можете ли вы рассказать мне, как «включить» клиент командной строки? Я пытаюсь установить xmonad в свою систему. –

+3

Привет Кейси. Клиентом командной строки является «cabal-install». Хотя GHC поставляется с двойной версией библиотек cabal, «cabal-install» представляет собой большую программу, чем просто исполняемый файл поверх библиотек cabal, поэтому он не освобождается до нескольких недель после GHC. Если вы в первую очередь хотите xmonad, вам лучше всего использовать платформу Haskell, поэтому вам нужно вернуться к GHC 6.12.4 (или дождаться следующего релиза платформы, который, как я думаю, запланирован на январь). –

ответ

1

GHC поставляется с определенным набором уже установленных библиотек. Когда вы запускаете команду сборки выше, она требует «переустановить» некоторые более старые версии библиотек, которые поставляются с GHC. Это плохо по понятным причинам.

Если вам действительно нужно это сделать, то может работать cabal-dev вместо Cabal. Кстати, использование Setup.hs вызывает версию библиотеки Cabal, которая поставляется вместе с вашим компилятором, где при запуске команды cabal вызывается программа cabal-install.

cabal-dev - это обертка вокруг cabal-install (и, следовательно, Cabal библиотека), которая обеспечивает изолированную сборку. Обеспечение безопасности для установки программ, которые нуждаются в разных версиях библиотек, которые поставляются с GHC. Остается вопрос, будут ли эти старые библиотеки строить против нового GHC. Во многих случаях сборка не удастся.

Я настоятельно рекомендую вам использовать cabal-dev для вашего ежедневного пакетного здания вместо cabal-install. Преимущества sandboxing много и сильно перевешивают риск того, что cabal-install развращает вашу базу данных пакетов, обновив пакет где-то посередине сети зависимостей за то, что вы уже установили.

Для получения дополнительной информации об использовании cabal-dev, я рекомендую это reddit post.

base представляет собой набор модулей Haskell, которые обеспечивают большую часть функциональности, которая поставляется с каждой установкой GHC. Это набор полезных библиотек, которые захотят и нуждаются большинству пользователей Haskell.

Смежные вопросы