1

私は現在、haskellのWeb開発フレームワークを試していますが、最近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モジュールと関係があると思いますが、修正する方法がわかりません。

追加情報

Ubuntu10.10Maverickの実行

ghcバージョン:

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

3 に答える 3

4

この特定の問題は発生していませんが、エラーメッセージは、GHCがバージョン3.0.3.2のパッケージ「ベース」を見つけられないという単純な質問のようです。このバージョンはGHC6.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は非表示として表示される場合があります(ただし、下位互換性のあるプレリュードが存在する場所であるため、少し可能性は低いですが)。非表示になっている場合は、次のコマンドを使用して再表示してみてください。

ghc-pkg expose base-3.0.3.2

今度は再実行yesod develしてみて、どうなるか見てみましょう。最良のシナリオは、それが機能することです。そうでない場合は、お知らせください。

于 2011-06-02T15:32:59.847 に答える
2

Yesod in Five Minutesガイドによると、「cdmysite」と「yesoddevel」の間のコマンド「cabalinstall」の呼び出しが欠落しているようです。使用するデータベースなど、「yesod init」中の応答に基づいて、さらにパッケージをインストールする必要がある場合があります。

また、トランスクリプトに「アドレスはすでに使用されています」と表示されているため、ポートが現在使用されていないことを確認することもできます。

于 2011-10-19T08:40:04.860 に答える
0

まず、ghc-pkg checkによって報告された壊れたパッケージを削除/再インストール/アップグレードすることにより、それらを解決することをお勧めします。

次に、mysiteアプリを問題なく手動でcabalビルドできますか?mysite.cabalが実際にbuild-dependsリストでベースを指定していない場合は、提案に従って追加する必要があります。

繰り返されるテストファイルメッセージは、現在のyesod開発では正常であり、ソースファイルをポーリングしています。

于 2011-06-30T20:41:11.077 に答える