首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安装yesod时出现问题

安装yesod时出现问题
EN

Stack Overflow用户
提问于 2011-10-22 22:15:45
回答 1查看 412关注 0票数 5

我想安装yesod,以便在空闲时间学习一些web知识和与Haskell一起玩一玩,但当我这样做时:

代码语言:javascript
复制
> cabal install yesod
Resolving dependencies...
cabal: cannot configure cprng-aes-0.2.2. It requires crypto-api >=0.8
For the dependency on crypto-api >=0.8 there are these packages:
crypto-api-0.8. However none of them are available.
crypto-api-0.8 was excluded because skein-0.1.0.1 requires crypto-api ==0.6.*
crypto-api-0.8 was excluded because crypto-api-0.6.4 was selected instead
crypto-api-0.8 was excluded because clientsession-0.7.3.1 requires crypto-api
>=0.6.4 && <0.7

但是我想我已经安装了正确的包

代码语言:javascript
复制
cabal list cprng-aes skein crypto-api clientsession
* clientsession
    Synopsis: Securely store session data in a client-side cookie.
    Default available version: 0.7.3.1
    Installed versions: 0.7.3.1
    Homepage: http://github.com/snoyberg/clientsession/tree/master
    License:  BSD3

* cprng-aes
    Synopsis: Crypto Pseudo Random Number Generator using AES in counter mode.
    Default available version: 0.2.2
    Installed versions: 0.2.2
    Homepage: http://github.com/vincenthz/hs-cprng-aes
    License:  BSD3

* crypto-api
    Synopsis: A generic interface for cryptographic operations
    Default available version: 0.8
    Installed versions: 0.6.4, 0.8
    Homepage: http://trac.haskell.org/crypto-api/wiki
    License:  BSD3

* crypto-api-tests
    Synopsis: A test framework and KATs for cryptographic operations.
    Default available version: 0.1
    Installed versions: [ Not installed ]
    Homepage: http://trac.haskell.org/crypto-api/wiki
    License:  BSD3

* hack-middleware-clientsession
    Synopsis: Middleware for easily keeping session data in client cookies.
    Default available version: 0.0.1
    Installed versions: [ Not installed ]
    Homepage: http://github.com/snoyberg/hack-middleware-clientsession/tree/master
    License:  BSD3

* skein
    Synopsis: Skein, a family of cryptographic hash functions. Includes
              Skein-MAC as well.
    Default available version: 0.1.0.1
    Installed versions: 0.1.0.1
    License:  BSD3

我对cabal install了解不多,但似乎crypto-api >=0.8<7都是必需的,这似乎是不可能的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-22 23:03:51

这里是Crypto-API维护者。

THE PROBLEM

问题是这些包是相互排斥的。最新的cprng-aes需要crypto-api版本>= 0.8。最新的skein需要使用crypto-api 0.6.*。因此,我们希望发生的是skein开发人员(我会给他发电子邮件)来更新包。

NOW的

在此之前,您将需要安装有问题的包的旧版本。尝试如下所示:

代码语言:javascript
复制
cabal install yesod 'crypto-api == 0.6.4' 'cprng == 0.2.1'

我认为这种语法是正确的。如果没有,您可以随时执行以下操作:

代码语言:javascript
复制
cabal install yesod crypto-api-0.6.4 cprng-0.2.1

社区如何避免此

从长远来看,我希望阴谋会变得更好,并自动找到兼容的版本,就像我在上面所做的那样。缺少这样的阴谋改进,每个人都提到,但没有人实现,这将是一个好的包维护者,试图保持一个一致的下限,他们的构建-dep。如果cprng-aes仍然接受crypto-api >= 0.5,那么我认为这应该是由cabal安装的。这对包维护者来说要求有点高,但他们可以使用CPP和cabal提供的{MAX,MIN}_VERSION宏来做到这一点。

编辑:更新 Felipe已经更新了skein并上传到hackage。Michael已经更新了客户端会话,鉴于他是Yesod的维护者,并且已经参与了电子邮件会话,我相信他很快就会将其上传到hackage。当你读到这条消息的时候,事情应该已经解决了,只需运行:

代码语言:javascript
复制
 cabal update ; cabal install yesod

经过反思,我看到了crypto-api中主要版本的流量有多大,导致了社区的其余部分。我不知道如何处理这个问题。我可以只是观察到“如果我做了这个改变,没有人会受到影响”,并直接与PVP决裂。OTOH,如果我违反了别人的代码,因为我没有遵循PVP,那么他们有合法的理由感到沮丧。有什么社区评论吗?

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7860155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档