Как я могу разрешить конфликт zlib-enum, zlib-binding, zlib-pipeline при установке Yesod - PullRequest
3 голосов
/ 29 марта 2012

Я пытаюсь установить свое веб-приложение Yesod на другую машину.

У меня он отлично установлен на моей текущей машине и может cabal install включить его без проблем.

Кажется, у меня проблемы с ним на другой машине (хотя это свежая виртуальная машина Ubuntu - например, никакие пакеты cabal не были установлены на ней до этого.

Обратите внимание, что я ничего не изменил в своей настройке (например, кабальные файлы точно такие же).

Это ошибка, которую я продолжаю получать:

cabal: невозможно настроить zlib-enum-0.2.2. Требуется zlib-bindings == 0.1. *
Для зависимости от zlib-bindings == 0.1. * Существуют следующие пакеты:
zlib-bindings-0.1.0 и zlib-bindings-0.1.0.1. Однако ни один из них не доступен.
zlib-bindings-0.1.0 был исключен, потому что zlib-проводник-0.2.0.1 требует zlib-bindings> = 0.0.3 && <0.1 <br> zlib-bindings-0.1.0 был исключен, поскольку вместо него был выбран zlib-bindings-0.0.3.2
zlib-bindings-0.1.0 был исключен из-за зависимости верхнего уровня zlib-bindings == 0.0.3.2
zlib-bindings-0.1.0.1 был исключен, потому что zlib-pipeline-0.2.0.1 требует zlib-bindings> = 0.0.3 && <0.1 <br> zlib-bindings-0.1.0.1 был исключен, так как вместо него был выбран zlib-bindings-0.0.3.2
zlib-bindings-0.1.0.1 был исключен из-за зависимости верхнего уровня zlib-bindings == 0.0.3.2

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

Я предполагаю, что версии этих пакетов на данный момент конфликтуют.

Как я могу решить эту проблему, пока она не будет исправлена?

Ответы [ 2 ]

3 голосов
/ 29 марта 2012

Это яркий пример адской зависимости.Теоретически, ошибка заключается в zlib-enum, поскольку он должен был иметь удар основной версии, чтобы отразить удар основной версии с zlib-bindings.Но на самом деле проблема в анализаторе зависимостей.Надеемся, что новый будет готов в ближайшее время.

Между тем, в зависимости от zlib-enum <= 0.2.1 должно работать. </p>

Кроме того, ответ @ ehird тоже должен быть полезным, хотяможет не полностью решить проблему.

3 голосов
/ 29 марта 2012

Возможно, вы захотите попробовать установить новую платформу Yesod ( Страница Hackage ):

cabal install yesod-platform

Это метапакет, который зависит от конкретных версий Yesod и всех его зависимостей, и предназначен для предотвращения подобных конфликтов версий.

Вы также можете попробовать версию cabal-install, находящуюся в разработке, в которой упоминается модульный решатель зависимостей, упомянутый Майклом. Если вы darcs get --lazy http://darcs.haskell.org/cabal/, у вас должна быть возможность запустить bootstrap.sh в cabal/cabal-install для его установки (но вам, вероятно, следует сначала стереть ~/.cabal и ~/.ghc). 1 Вам все равно придется явно запросите модульный решатель, передав --solver=modular cabal, хотя.

Обратите внимание, что, хотя это версия для разработки, на самом деле она довольно стабильна; многие люди на GHC 7.4.1 (включая меня) используют его, так как версия на Hackage не компилируется. У меня до сих пор не было проблем.

1 Это для Linux; Я думаю, что соответствующий каталог ~/Library/Haskell на OS X. Я не знаю, что делать в Windows, тем более что сценарий оболочки там не запускается.

...