2016-02-14 2 views
2

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

-- 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-типов

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 ??

+0

Я лично не использовал стек, поэтому мое понимание этого не имеет первостепенного значения. Но похоже, что вам нужен [пользовательский снимок] (https://github.com/commercialhaskell/stack/wiki/Custom-Snapshot), если ни один из «стандартных» снимков не позволит вашему пакету строить. Возможно, вы просто используете неправильный моментальный снимок, или ваш файл кэша ошибочен. – user2407038

ответ

3

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

extra-deps: 
- http-types-0.8.6 

После того, как вы начинаете в том числе пакеты, которые имеют противоречивые версии границ по отношению к снимку, который вы используете, вы могут в конечном итоге столкнуться с этими проблемами довольно быстро. Мое решение рекомендуется:

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

You можете добавить пакет в Stackage самостоятельно, даже если вы не являетесь автором. Инструкции см. В разделе the maintainer guide.

+0

yep это сделал трюк! Благодаря :) – accraze

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