Я пытаюсь запустить новый проект с помощью веб-фреймворка Snap. Я использовал snap init
, чтобы получить базовый скелет. Я также положил http://www.stackage.org/lts/cabal.config рядом с моим .cabal файлом. Я не раскомментировал эту строку исключительно для использования Stackage. Поэтому я попытался построить, и он потерпел неудачу и не смог найти версию lens
, необходимую для моего файла .cabal. Файл cabal.config из Stackage указывает версию объектива, которая не совпадает с версией в моем файле .cabal. Поэтому я удалил все ограничения из своего списка пакетов и сделал обычный cabal install --only-dep -j8 --enable-test
, и он сработал!Stackage включительно или эксклюзивное использование
Однако мне всегда говорили, что версии пакетов должны быть ограничены. Так что, работая со Stackage, можно ли оставить версии пакетов без ограничений? Должен ли я понижать мои пакеты до тех, которые доступны в Stackage?
Насколько я понимаю, файл cabal.config задает набор зависимостей с конкретными версиями, которые удовлетворяют зависимостям, и как работает Stackage? Это всего лишь подмножество пакетов от Hackage, которые, как доказано, совместимы? Принимают ли они свои собственные пакеты или полагаются на Hackage для загрузки?
Заранее благодарен
Последующие действия, поэтому следует добавить ограничения, совместимые с Stackage, в мой файл .cabal? –
Если вы собираетесь создавать только Stackage, я не вижу смысла добавлять ограничения к вашим файлам .cabal: выбранный снимок Stackage предоставляет полное описание набора пакетов и его ограничений. Если вы хотите, чтобы другие люди могли создавать ваш пакет против Hackage, было бы целесообразно сохранить ограничения на основе API, которые вы используете для пакетов. – kdkeyser
Спасибо. Принят сейчас. –