Удалите пакеты Stack/Cabal и установите более старые версии

Я новичок в Haskell и использую Stack для создания небольшого личного проекта на Mac OSX. Недавно я добавил несколько новых сборок в свой файл Cabal, но теперь, когда я запускаю stack build, я получаю следующую ошибку:

--  While attempting to add dependency,
    Could not find package api-builder in known packages

--  Failure when adding dependencies:
      api-builder: needed (==0.11.0.0), not present in build plan (latest applicable is 0.11.0.0)
      http-client: needed (==0.4.20), 0.4.27 found (latest applicable is 0.4.20)
      http-types: needed (==0.8.6), 0.9 found (latest applicable is 0.8.6)
    needed for package: music-haskell-0.1.0.0

Recommended action: try adding the following to your extra-deps in /Users/.../src/music-haskell/stack.yaml
- api-builder-0.11.0.0

You may also want to try the 'stack solver' command

Когда я запускаю stack solver, я получаю сообщение об ошибке пакета http-types

cabal: Could not resolve dependencies:
trying: music-haskell-0.1.0.0 (user goal)
next goal: http-types (dependency of music-haskell-0.1.0.0)
rejecting: http-types-0.9 (conflict: music-haskell => http-types==0.8.6)
rejecting: http-types-0.8.6, 0.8.5, 0.8.4, 0.8.3, 0.8.2................
(global constraint requires ==0.9)
Dependency tree exhaustively searched.

Насколько я понимаю, я уже установил http-types-0.9, но теперь мне нужен http-types-0.8.6. Сначала я пытался установить его вручную с помощью $stack install http-types, но получил следующую ошибку:

Error parsing targets: Specified target version 0.8.6 for package http-types does not match snapshot version 0.9

Когда я посмотрел, смогу ли я сделать $ stack uninstall, но похоже, что это устарело.

Как я могу избавиться от моментального снимка/глобальной цели для http-type??


person accraze    schedule 14.02.2016    source источник
comment
Я лично не очень часто использовал стек, поэтому мое понимание его не имеет первостепенного значения. Но похоже, что вам нужен настраиваемый снимок, если ни один из стандартных снимков не подойдет. разрешить сборку вашего пакета. Возможно, вы просто используете неправильный снимок, или сам файл клики неверен.   -  person user2407038    schedule 14.02.2016


Ответы (1)


Вы можете переопределить определенный пакет моментальных снимков в файле stack.yaml с помощью дополнительных операций, например:

extra-deps:
- http-types-0.8.6

Как только вы начнете включать пакеты с конфликтующими версиями по сравнению с используемым моментальным снимком, вы можете довольно быстро столкнуться с этими проблемами. Мое рекомендуемое решение:

  • Попросите сопровождающих пакетов добавить свои пакеты в Stackage, чтобы вам не приходилось возиться с версиями вручную.
  • Придерживайтесь пакетов в Stackage, когда это возможно

Вы можете самостоятельно добавить пакет в Stackage, даже если вы не являетесь его автором. Инструкции см. в руководстве сопровождающего.

person Michael Snoyman    schedule 14.02.2016