Понимание программы стека Haskell и версии resolver и LTS
Я пытаюсь понять, как использовать стек и stackage.org. Когда я впервые установил его и использовал, stackage.org был на ЛТС-3.8 ("решатель"). С тех пор, stackage.org теперь имеет LTS-3.11.
во-первых, я хотел бы подтвердить, что это значит. Stackage-это репозиторий пакетов, в котором для конкретной версии LTS (скажем, 3.8) пакеты были проверены на совместную работу. Таким образом, пакеты LTS-3.8 работают вместе, и пакеты LTS-3.11 также работают вместе. Двигаться дальше...
когда я запускаю stack new projectname
, стек говорит мне:
Checking against build plan lts-3.8
Selected resolver: lts-3.8
означает ли это, что проект был настроен на использование только пакетов и версий, которые были проверены в LTS-3.8?
Если я теперь хочу начать новый проект и хочу использовать последнюю версию LTS с новым проектом, как мне сказать стеку сделать это по умолчанию?
Что делать, если я хочу "обновить" старый проект, чтобы использовать новую версию LTS?
1 ответов
означает ли это, что проект был настроен на использование только пакетов и версий, которые были проверены в LTS-3.8?
точно. (И если вам когда-либо понадобятся пакеты, не включенные в набор LTS 3.8, вы можете указать их через на stack.yaml
. стек захватит их из Hackage и установит их отдельно для вашего проекта, не затрагивая снимок LTS или другие ваши проекты.)
если я теперь хочу начать новый проект и хотите использовать последнюю версию LTS с новым проектом, как я могу сказать стеку сделать это по умолчанию?
, например:stack new projectname --resolver=lts-3.11
чтобы установить распознаватель для нового проекта. по умолчанию стек содержит самый последний снимок LTS, который вы уже используете, и поэтому, как только у вас есть проект с последними LTS, будущие новые проекты последуют его примеру.
как насчет того, если я хочу "обновить" старый проект, чтобы использовать новую версию LTS?
изменить resolver
поле в . Изменения вступят в силу при следующем построении проекта.