我建议cabal sandbox
对每个 Yesod 项目使用,而不是将 Yesod 平台安装为系统库的一部分。将 cabal 沙箱视为单个项目中 Haskell 包的本地化Data.Text
集合,因此您可以在 2 个不同的 cabal 沙箱中拥有不同版本的包,例如。使用cabal sandbox
需要更长的时间进行编译,但它使依赖解析变得更简单(在此处阅读更多内容:(在此处阅读更多内容:http: //coldwa.st/e/blog/2013-08-20-Cabal-sandbox.html)。cabal sandbox
需要cabal
如果我没记错的话,至少是 1.18的版本。
好了,话不多说。让我们开始吧。
要获得最新cabal
的. 由于您使用的是 Ubuntu,因此只需:cabal
cabal
cabal 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
到您的环境变量。PATH
cabal
一旦你有了一个带有阴谋集团沙盒的阴谋集团
根据我从Yesod 快速入门指南中阅读的内容,您将需要安装该yesod-bin
软件包。它的hackage页面在这里。基本上,yesod-bin
它为您提供了一个yesod
允许您初始化脚手架站点的二进制文件。最新版本yesod-bin
是 1.2.5.6,这就是我们要安装的。
创建一个名为的目录yesod-bin
:
mkdir yesod-bin
进入该目录,并在其中设置一个 cabal 沙箱,如下所示:
cabal sandbox init
使用以下命令从 hackage 获取最新的包列表:
cabal update
现在,我们将yesod-bin
在 cabal 沙箱中安装最新版本的 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中的这两个问题有关:
但是,mmorph
版本1.0.0可以正常工作。因此,我们必须在安装时将版本指定mmorph
为1.0.0yesod-bin
,如下所示:
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 init
yesod devel