Я не сталкивался с этой конкретной проблемой, но сообщение об ошибке выглядит так, будто это простой вопрос о том, что GHC не может найти в версии 3.0.3.2 пакет "base".Эта версия была доступна для сборки начиная с GHC 6.9, поэтому она должна быть у вас.Попробуйте выполнить следующую команду:
ghc-pkg check
Это скажет вам, если что-то не так с вашими пакетами.Cabal может быть чем-то вроде кошмара для зависимостей - отчасти, кажется, потому что многие разработчики на Haskell недооценивают степень изменения базовых библиотек в будущем.Таким образом, они будут определять зависимость как «> = [версия пакета x]», не ограничивая максимальную версию доступной в настоящее время.Или они просто полностью исключают ограничение версии.
Да, я рад сказать, что Йесод не попадает в эту ловушку.Но несколько библиотек, от которых это зависит, делают.Начав разработку на Haskell, усвойте этот урок: никогда не думайте, что будущие версии библиотеки не нарушат ваш код.Они будут.Много.
Если ghc-pkg обнаружит поврежденные пакеты, вам может потребоваться очистить / удалить / переустановить эти пакеты, пока они не будут очищены или скрыты.(Просто выполните ghc-pkg hide [package name]
, чтобы указать ghc игнорировать этот пакет.
Ваша следующая проблема - это скрытый базовый пакет. Попробуйте следующее:
ghc-pkg list | grep base
Если вы видите скобки вокруг библиотеки,это означает, что он скрыт. Пакет base-3.0.3.2 может отображаться как скрытый (хотя это немного маловероятно, поскольку именно там живет обратно совместимая версия Prelude). Если он скрыт, попробуйте показать его с помощью следующей команды:
ghc-pkg expose base-3.0.3.2
Теперь попробуйте заново запустить yesod devel
и посмотрите, как это происходит. В лучшем случае это работает. Если нет, дайте нам знать.