2017-01-21 9 views
3

Я пытаюсь настроить Hakyll на новый экземпляр Ubuntu 16.04, но я не могу получить инструкции по установке на основе стека.Стек не разрешает зависимости должным образом

Начиная с stack install hakyll, я получаю:

Error: While constructing the build plan, the following exceptions were encountered: 

In the dependencies for hakyll-4.9.3.0: 
    http-conduit-2.1.11 must match >=2.2 && <2.3 (latest applicable is 2.2.3) 

Plan construction failed. 

я получил подобную ошибку, когда привязывания к stack-install http-conduit-2.1.11, на этот раз с:

Error: While constructing the build plan, the following exceptions were encountered: 

In the dependencies for http-conduit-2.2.3: 
    http-client-0.4.31.2 must match >=0.5 && <0.6 (latest applicable is 0.5.5) 
    http-client-tls-0.2.4.1 must match >=0.3 && <0.4 (latest applicable is 0.3.3.1) 

Plan construction failed. 

После разрешения зависимостей для этого (также с использованием стека) , Я снова попробовал stack install http-conduit-2.1.11, но я снова получил ту же ошибку зависимостей.

Пакеты http-client-0.4.31.2 и http-client-tls-0.2.4.1 появляются в моем ~/.stack/precompiled/x86_64-linux/ghc-8.0.1/1.24.0.0/, который не является явно в моем $PATH, однако, что чувствует себя очень Hacky решение, и я не нашел какой-либо документации, рекомендующий этот подход.

Как правильно установить Hakyll на моей машине?

+0

Я понимаю теперь, что цель 'стека установки hakyll' должен получить двоичный файл 'hakyll-init'. Не удалось выполнить команду, потому что 'hakyll-4.9.3.0' несовместим с преобразователем, установленным в вашем файле stack.yaml (вероятно,' ~/.stack/global-project/stack.yaml'). 'hakyll-4.9.3.0' включен в [nightly-2017-01-17] (https://www.stackage.org/nightly-2017-01-17), хотя, чтобы вы могли' stack -resolver nightly- 2017-01-17 установить hakyll'. Остальные [инструкции] (https://jaspervdj.be/hakyll/tutorials/01-installation.html) должны работать примерно так, как написано. – sjakobi

+0

BTW есть [предложение для флага '--solver'] (https://github.com/commercialhaskell/stack/issues/2656), который должен упростить установку исполняемых файлов со стеклом. – sjakobi

ответ

2

Более простое решение, чем @ sjakobi в этом случае должен был указать распознаватель как параметр командной строки при запуске нового проекта Stack:

stack install hakyll --resolver=5.11 --install-ghc 
3

Управление зависимостями со стеком должно быть воспроизводимым и декларативным, это означает, что проект стека будет компилироваться только после того, как все зависимости будут записаны в .cabal-файле (-ях) проекта и после stack.yaml проекта определяет версии для этих зависимостей либо в разделе resolver, либо в разделе extra-deps.

Ваше замешательство, похоже, связано с непониманием того, что делает stack install. Командная строка поможет это сказать об этом:

build     Build the package(s) in this directory/configuration 
    install     Shortcut for 'build --copy-bins' 
... 
    --[no-]copy-bins   Enable/disable copying binaries to the local-bin-path 
          (see 'stack path') 

stack install делает не сохранить какие-либо зависимости.

Таким образом, правильный способ сделать hakyll доступным как зависимость для вашего кода:

  • Создать правильный проект стека с stack init, если у вас уже есть пакет Cabal, или stack new, если вы этого не сделаете.

  • Добавить hakyll в библиотеку или исполняемый файл build-depends в ваш файл .cabal.

  • Попытка выполнить stack build и следовать инструкциям в сообщениях об ошибках до тех пор, пока не будут устранены все проблемы.

+0

Вы можете установить пакеты с помощью 'stack install', но он просто не делает установленные пакеты доступными для проекта. – Cubic

+0

@Cubic Это зависит от того, что вы подразумеваете под «установочными пакетами». Как вы это понимаете? – sjakobi

+1

Я могу «стекать install », этот пакет будет загружен, построен, я могу выполнить любые двоичные файлы, которые являются частью пакета с «exec exec» ... если есть другой способ интерпретировать «install пакеты «Я не знаю об этом. – Cubic

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

  • Нет связанных вопросов^_^