yesod 持久性依赖缺失

Posted

技术标签:

【中文标题】yesod 持久性依赖缺失【英文标题】:yesod persistent dependencies missing 【发布时间】:2014-05-14 19:20:55 【问题描述】:

我尝试按照官方网站的Yesod快速入门,但是在运行yesod devel(安装并运行yesod init后)时,如果我使用sqlite、postgresql、postgresql+,由于缺少依赖项而无法构建fay 或 mysqlyesod-init 中的“简单”选项可以正常工作)。

给出的错误信息是:

对于 sqlite:

cabal: At least the following dependencies are missing:
persistent-sqlite ==1.3.*

对于 postgresql:

cabal: At least the following dependencies are missing:
persistent-postgresql ==1.3.*

对于 postgres + fay:

cabal: At least the following dependencies are missing:
fay >=0.16, persistent-postgresql ==1.3.*, yesod-fay >=0.5.0.1

对于mysql:

cabal: At least the following dependencies are missing:
persistent-mysql  ==1.3.*

对于 mongoDB:

cabal: At least the following dependencies are missing:
persistent-mongoDB ==1.3.*

有谁知道出了什么问题以及如何解决?

更新:

我能够通过与 yesod 平台分开安装一些缺少的依赖项来解决一些问题。

cabal install persistent-sqlite 修复了使用 sqlite 的所有问题。

cabal install persistent-postgresqlcabal install persistent-mysql 在我的 Mint 16 系统(libpq-dev 和 libmysqlclient-dev)安装了一些额外的分发包后工作。

cabal install persistent-mongodb 失败,出现我无法解决的错误:

解决依赖关系... 配置persistent-mongoDB-1.3.1 ... 构建persistent-mongoDB-1.3.1 ... 预处理库persistent-mongoDB-1.3.1... [1 of 1] 编译 Database.Persist.MongoDB (Database/Persist/MongoDB.hs, dist/build/Database/Persist/MongoDB.o)

数据库/Persist/MongoDB.hs:420:26: 不在范围内:类型构造函数或类“MonadThrow” 安装persistent-mongoDB-1.3.1 失败 cabal:错误:某些软件包无法安装: persistent-mongoDB-1.3.1 在构建阶段失败。例外是: 退出失败 1

有人知道如何解决这个问题吗?

更新:

维护者更新了 cabal 包,解决了最后一个问题。

【问题讨论】:

【参考方案1】:

有一个新版本没有这个错误(我安装了persistent-mongoDB-1.3.1.1,之前的版本有你发现的错误)。

执行cabal update 以刷新包列表并重试。

【讨论】:

以上是关于yesod 持久性依赖缺失的主要内容,如果未能解决你的问题,请参考以下文章

yesod 持久性:从键列表中获取实体列表

Yesod 持久示例

Yesod 持久代码的类型类约束

使用持久键列表选择 (Yesod)

Yesod 数据库持久记录访问

yesod 持久:在小村庄内获取实体值