gpt4 book ai didi

yesod - 在Ubuntu 13.10上设置Yesod

转载 作者:行者123 更新时间:2023-12-02 07:00:50 25 4
gpt4 key购买 nike

按照QuickStart上的说明进行操作后,打开网页时,我在Yesod中看到一些错误。错误的结尾是:

...

cannot satisfy -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)

Build failure, pausing...



希望相关,引用的 tutorial让我运行

cabal-dev install



在一个新的Yesod项目上,但是这也给了我错误:

...

[1 of 1] Compiling Control.Monad.Logger ( Control/Monad/Logger.hs, dist/build/Control/Monad/Logger.o )

Control/Monad/Logger.hs:63:39: Module System.Log.FastLogger' does not exportpushLogStr'

Control/Monad/Logger.hs:63:72: Module System.Log.FastLogger' does not exportLoggerSet'

Control/Monad/Logger.hs:63:83: Module System.Log.FastLogger' does not exportnewLoggerSet'

Control/Monad/Logger.hs:63:97: Module System.Log.FastLogger' does not exportdefaultBufSize' Failed to install monad-logger-0.3.3.0

...



在后面的这一系列错误中,我碰到了一个页面,提示该问题已得到解决(因此,我不允许我发布两个以上的链接,但是Google出现了这个错误,并且马上就出现了)。

有任何想法吗?

提前致谢!

最佳答案

我建议为每个Yesod项目使用cabal sandbox,而不是将Yesod平台安装为系统库的一部分。可以将Cabal沙箱看作是单个项目中Haskell软件包的本地化集合,因此您可以在2个不同的Cabal沙箱中使用不同版本的软件包,例如Data.Text。使用cabal sandbox会花费较长的时间进行编译,但是它使依赖关系解析变得更简单(在此处了解更多:(在此处了解更多):http://coldwa.st/e/blog/2013-08-20-Cabal-sandbox.html)如果我没有记错的话,cabal sandbox需要的cabal版本至少为1.18。

好了,足够多的谈话。让我们开始吧。

要获取最新的cabal,即使您通过软件包管理器安装了cabal,也很容易,即使软件包管理器安装了没有cabalcabal sandbox。由于您使用的是Ubuntu,因此:

sudo apt-get install cabal

一旦安装了某些版本的 cabal,请运行:
cabal sandbox

如果您看到与此类似的内容:
cabal: Please specify a subcommand (see 'help sandbox')

然后恭喜,您拥有的 cabal版本支持 cabal sandbox,只要继续 就可以了。一旦您有了答案中带有 cabal 沙盒的 cabal ,就可以继续。

相反,如果您看到类似以下内容:
cabal: unrecognised command: sandbox (try --help)

然后,您将需要更现代的Cabal版本。只需克隆cabal repository on github:
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所在的文件夹之前,请确保在您的PATH环境变量之前添加 cabal

一旦有了带有Cabal沙箱的Cabal

根据我从Yesod quick start guide读取的内容,您将需要安装yesod-bin软件包。它的黑客页面是here。基本上,yesod-bin为您提供了一个yesod二进制文件,该文件可让您初始化脚手架站点。 yesod-bin的最新版本是1.2.5.6,这就是我们要安装的版本。

创建一个名为yesod-bin的目录:
mkdir yesod-bin

进入该目录,并在其中建立一个cabal沙箱,如下所示:
cabal sandbox init

使用以下命令从黑客获取最新的软件包列表:
cabal update

现在,我们将在Cabal沙箱中安装最新版本的yesod-bin 1.2.5.6。但是,yesod-bin依赖于mmorph软件包,该软件包默认安装1.01版,并且尝试安装mmorph-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软件包版本的情况下,安装和安装mmorph会默认安装mmorph-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 repo中的这两个问题有关:
  • https://github.com/Gabriel439/Haskell-MMorph-Library/issues/8
  • https://github.com/Gabriel439/Haskell-MMorph-Library/pull/10

  • 但是,mmorph版本 1.0.0 可以正常工作。因此,在安装mmorph时,我们必须将yesod-bin的版本指定为 1.0.0 ,如下所示:
    cabal install mmorph-1.0.0 yesod-bin-1.2.5.6

    这将花费一些时间。 cabal sandbox.cabal-sandbox目录内创建一个名为yesod-bin的目录,并且yesod二进制文件(以及yesod-bin包中的其他几个二进制文件)可以在.cabal-sandbox/bin文件夹中找到。只需将该文件夹添加到PATH中,您就应该能够完成yesod inityesod devel,如快速入门结尾所示。

    关于yesod - 在Ubuntu 13.10上设置Yesod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21199189/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com