2

QuickStartの指示に従った後、Web ページを立ち上げたときに Yesod でいくつかのエラーが表示されます。エラーは次のように終了します。

...

-package-id wai-extra-1.3.4.6-62543d69d10941dae1d9b206c3eb3067 を満たすことができません:

wai-extra-1.3.4.6-62543d69d10941dae1d9b206c3eb3067 is unusable due to missing or recursive dependencies:
  blaze-builder-conduit-1.0.0-1053545317cd68e3d51439dd9a0e622d zlib-conduit-1.0.0-b51dc7daf506ea4c5ecd031c5101d96a
(use -v for more information)

ビルドに失敗しました。一時停止しています...

うまくいけば、参照されたチュートリアルで実行できます

cabal-dev インストール

ただし、新しい Yesod プロジェクトでは、エラーも発生します。

...

[1/1] Control.Monad.Logger のコンパイル ( Control/Monad/Logger.hs, dist/build/Control/Monad/Logger.o )

Control/Monad/Logger.hs:63:39: モジュールSystem.Log.FastLogger' does not exportpushLogStr'

Control/Monad/Logger.hs:63:72: モジュールSystem.Log.FastLogger' does not exportLoggerSet'

Control/Monad/Logger.hs:63:83: モジュールSystem.Log.FastLogger' does not exportnewLoggerSet'

Control/Monad/Logger.hs:63:97: モジュールSystem.Log.FastLogger' does not exportdefaultBufSize' は monad-logger-0.3.3.0 のインストールに失敗しました

...

この後の一連のエラーで、問題が修正されたことを示唆するページに出くわしました(2つ以上のリンクを投稿することはできませんが、Googleはエラーを表示し、すぐに表示されます).

何か案は?

前もって感謝します!

4

2 に答える 2

7

cabal sandboxシステム ライブラリの一部として Yesod プラットフォームをインストールするよりも、Yesod プロジェクトごとに使用することをお勧めします。cabal サンドボックスは、1 つのプロジェクト内の Haskell パッケージのローカライズされData.Textたコレクションと考えてください。たとえば、2 つの異なる cabal サンドボックスに異なるバージョンのパッケージを含めることができます。を使用cabal sandboxすると、コンパイルに時間がかかりますが、依存関係の解決が簡単になります (詳細はこちらをご覧ください: (詳細はこちらをご覧ください: http://coldwa.st/e/blog/2013-08-20-Cabal-sandbox.html )。私が間違っていなければ、少なくとも 1.18cabal sandboxのバージョンです。cabal

さて、話は十分です。始めましょう。

最新の を入手するには、パッケージ マネージャーが をインストールしない場合でも、パッケージ マネージャーを使用しcabalてインストールした方が簡単です。あなたはUbuntuを使用しているので、次のようにします:cabalcabalcabal sandbox

sudo apt-get install cabal

cabalのバージョンをインストールしたら、次を実行します。

cabal sandbox

この行に沿って何かが表示された場合:

cabal: Please specify a subcommand (see 'help sandbox')

それからおめでとうございます、あなたがサポートしているバージョンは、cabal答えのカバルサンドボックスセクションを持つカバルを手に入れたら、先に進みます.cabal sandbox

代わりに次のようなものが表示された場合:

cabal: unrecognised command: sandbox (try --help)

次に、より最新のバージョンの cabal が必要になります。github で cabal リポジトリのクローンを作成するだけです:

git clone https://github.com/haskell/cabal.git

Cabal-v1.18.1.2ディレクトリに移動し、次のようにブランチをチェックアウトします。

git checkout Cabal-v1.18.1.2

次に実行します。

cabal install Cabal/ cabal-install/

これはcabal$HOME/.cabal/binフォルダーにインストールする必要があります。システムが配置されているフォルダーの前に、環境変数の前に必ず追加 $HOME/.cabal/binしてください。PATHcabal

カバルサンドボックスを備えたカバルを取得したら

Yesod クイック スタート ガイドから読んだ内容に基づいて、yesod-binパッケージをインストールする必要があります。ハックページはこちら. 基本的に、足場サイトを初期化できるバイナリをyesod-bin提供します。yesodの最新バージョンyesod-binは 1.2.5.6 で、これをインストールします。

次の名前のディレクトリを作成しますyesod-bin

mkdir yesod-bin

そのディレクトリに移動し、その中に cabal サンドボックスを次のように設定します。

cabal sandbox init

以下を使用して、hackage から最新のパッケージ リストを取得します。

cabal update

次に、最新バージョンのyesod-bin1.2.5.6 を cabal サンドボックスにインストールします。ただし、デフォルトでバージョン 1.01 をインストールするパッケージにyesod-bin依存しており、インストールしようとすると、次のようなエラー メッセージが表示されます。mmorphmmorph-1.01

src/Control/Monad/Morph.hs:76:8:
    Could not find module `Control.Applicative.Backwards'
    Use -v to see a list of the files searched for.
Failed to install mmorph-1.0.1
cabal: Error: some packages failed to install:
mmorph-1.0.1 failed during the building phase. The exception was:
ExitFailure 1

パッケージバージョンyesod-binを指定せずにインストールすると、デフォルトでインストールされ、次のエラーが発生します。mmorphmmorph-1.0.1

cabal: Error: some packages failed to install:
base64-conduit-1.0.0 depends on mmorph-1.0.1 which failed to install.
blaze-builder-conduit-1.0.0 depends on mmorph-1.0.1 which failed to install.
conduit-1.0.10 depends on mmorph-1.0.1 which failed to install.
http-client-conduit-0.2.0.1 depends on mmorph-1.0.1 which failed to install.
http-conduit-2.0.0.3 depends on mmorph-1.0.1 which failed to install.
http-reverse-proxy-0.3.0 depends on mmorph-1.0.1 which failed to install.
mmorph-1.0.1 failed during the building phase. The exception was:
ExitFailure 1
network-conduit-1.0.1 depends on mmorph-1.0.1 which failed to install.
project-template-0.1.3.2 depends on mmorph-1.0.1 which failed to install.
resourcet-0.4.10 depends on mmorph-1.0.1 which failed to install.
wai-2.0.0 depends on mmorph-1.0.1 which failed to install.
wai-logger-2.1.1 depends on mmorph-1.0.1 which failed to install.
warp-2.0.2 depends on mmorph-1.0.1 which failed to install.
yaml-0.8.5.3 depends on mmorph-1.0.1 which failed to install.
yesod-bin-1.2.5.6 depends on mmorph-1.0.1 which failed to install.

mmorphこれは、 github リポジトリの次の 2 つの問題に関連しているようです。

ただし、mmorphバージョン1.0.0は問題なく動作します。そのため、次のように、インストール時にのバージョンを 1.0.0 に指定する必要がありmmorphますyesod-bin

cabal install mmorph-1.0.0 yesod-bin-1.2.5.6

これにはかなりの時間がかかります。ディレクトリ内にcabal sandboxという名前のディレクトリを作成し、バイナリ (パッケージからの他のいくつかのバイナリと共に) をフォルダ内で見つけることができます。そのフォルダーを に追加するだけで、クイック スタートの最後に示したように、およびを実行できるようになります。.cabal-sandboxyesod-binyesodyesod-bin.cabal-sandbox/binPATHyesod inityesod devel

于 2014-01-18T09:54:20.453 に答える
1

Ubuntu 14.04 LTSに関する彼のガイドラインに従おうとして、少し動けなくなったので、@yanhanのすばらしい答えへの簡単な更新として。

cabal 実行可能ファイルがプリインストールされていない場合は、次のこともできます。

git clone https://github.com/haskell/cabal.git

それからもちろん:

git checkout Cabal-v1.20.0.2

次に、bootstrap.shスクリプトを使用して、cabal 実行可能ファイルと Cabal パッケージをインストールできます。

cd cabal-install && ./bootstrap.sh

しばらく時間がかかりますが、すぐに新しくインストールされた cabal 実行可能ファイルのバージョンを確認できます。

$HOME/.cabal/bin/cabal --version
于 2014-10-20T16:30:36.207 に答える