Помогите с запуском сервера разработки Yesod? - PullRequest
1 голос
/ 02 июня 2011

Я сейчас пробую фреймворки для веб-разработки на haskell, и недавно я столкнулся с yesod . Это показалось довольно интересным, поэтому я установил его с помощью cabal, однако я не могу запустить сервер разработки. Следуя инструкциям по началу работы, вот результат:

$ yesod init
$ cd mysite
$ yesod devel

Configuring mysite-0.0.0...
Testing files...
Rebuilding app
yesod: bind: resource busy (Address already in use)
Preprocessing library mysite-0.0.0...
Preprocessing executables for mysite-0.0.0...
Building mysite-0.0.0...

Controller.hs:16:7:
    Could not find module `Data.Dynamic':
      It is a member of the hidden package `base'.
      Perhaps you need to add `base' to the build-depends in your .cabal file.
      It is a member of the hidden package `base-3.0.3.2'.
      Perhaps you need to add `base' to the build-depends in your .cabal file.
      Use -v to see a list of the files searched for.
Testing files...
Testing files...
^^ above line just keeps repeating...

Я предполагаю, что это как-то связано с модулем Data.Dynamic, но я не знаю, как это исправить.

Дополнительная информация

Запуск Ubuntu 10.10 Maverick

GHC версия:

$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 6.12.1

Ответы [ 3 ]

4 голосов
/ 02 июня 2011

Я не сталкивался с этой конкретной проблемой, но сообщение об ошибке выглядит так, будто это простой вопрос о том, что 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 и посмотрите, как это происходит. В лучшем случае это работает. Если нет, дайте нам знать.

2 голосов
/ 19 октября 2011

Согласно руководству Yesod за пять минут, вы, похоже, пропускаете вызов команды "cabal install" между вашими "cd mysite" и "yesod devel".Возможно, потребуется установить дополнительные пакеты на основе ваших ответов во время «yesod init», например, какую базу данных вы хотите использовать.

Кроме того, вы можете захотеть проверить, что портв настоящее время не используется, поскольку у вас есть «Адрес уже используется», показанный в вашей расшифровке.

0 голосов
/ 01 июля 2011

Во-первых, было бы неплохо разрешить все поврежденные пакеты, обнаруженные при проверке ghc-pkg, удалив / переустановив / обновив их.

Далее, можете ли вы без проблем вручную создать приложение mysite?Если ваш mysite.cabal на самом деле не указывает base в списке, зависящем от сборки, вы должны следовать предложению добавить это.

Повторяющееся сообщение Testing Files является нормальным для текущего yesod devel, оно опрашивает ваши исходные файлы.

...