2011-10-22 31 views
5

Quiero instalar yesod para aprender un poco sobre la web y jugar un poco con Haskell en mi tiempo libre, pero cuando lo hago:problemas para instalar yesod

> 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 

pero creo que tengo los paquetes que están correctamente instalados

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 

no sé mucho acerca de cabal install pero parece que tanto crypto-api >=0.8 y <7 se requieren, lo que parece imposible.

+0

+1 y favorito. Tuve exactamente ese problema solo hoy, no pude resolverlo y no encontré nada. Sistema operativo y versión? Estaba usando Ubuntu 11.10 – delnan

+0

Estoy usando pruebas de Debian, con 'haskell-platform-2011.2.0.1' y' cabal-0.10.2-3' – epsilonhalbe

Respuesta

8

mantenedor de Crypto-API aquí.

EL PROBLEMA

El problema es que los paquetes son mutuamente excluyentes. La última versión de cprng-aes requiere la versión crypto-api >= 0.8. La última madeja requiere crypto-api 0.6.*. Entonces, lo que queremos que suceda es el desarrollador de madejas (a quien enviaré un correo electrónico) para actualizar el paquete.

POR AHORA

Hasta entonces, usted tendrá que instalar las versiones antiguas de los paquetes en cuestión. Pruebe algo como:

cabal install yesod 'crypto-api == 0.6.4' 'cprng == 0.2.1' 

Creo que la sintaxis es correcta. Si no siempre se puede hacer:

cabal install yesod crypto-api-0.6.4 cprng-0.2.1 

¿CÓMO PUEDE EVITAR LA COMUNIDAD ESTA

A largo plazo espero Cabal será mejor y de forma automática la búsqueda de las versiones compatibles, como lo hice con los anteriores. A falta de tales mejoras caballesas, que todos mencionan y nadie implementa, sería bueno que los mantenedores del paquete intenten mantener un límite inferior consistente en sus construcciones. Si cprng-aes todavía acepta crypto-api >= 0.5, entonces creo que esto habría sido instalado por cabal. Esto es mucho pedir a los mantenedores de paquetes, pero pueden hacerlo usando CPP y las macros {MAX,MIN}_VERSION provistas por cabal.

EDIT: ACTUALIZAR Felipe ha actualizado madeja y subido a hackage. Michael ha actualizado la sesión del cliente y, dado que es el mantenedor de Yesod y ya está involucrado en las conversaciones por correo electrónico, estoy seguro de que pronto lo subirá a Hackage. Las cosas deberían ser fijados por el momento de leer este mensaje, basta con ejecutar:

cabal update ; cabal install yesod 

En la reflexión, que ver la cantidad de tráfico grandes baches en la versión cripto-api hacen que el resto de la comunidad. No estoy seguro de cómo manejar el problema. Podría haber observado que "nadie se verá afectado si hago este cambio" y simplemente romper con PVP. OTOH, si rompo el código de alguien cuando no sigo PVP, entonces tienen una razón legítima para estar molesto. ¿Algún comentario de la comunidad?

+1

No tiene límites superiores ('0.6. *' Es como '<0.7 ') como sugieres para' cprng-aes' puede por otro lado causar otros problemas, como una compilación fallará, ya que tal vez el nuevo 'cprng-aes 0.8' han eliminado una función que utilizó el paquete que se instalará. – Tarrasch

+1

@tarrasch Es cierto, pero en general se cree que tener un límite superior duro causa más fallas de las que previene. Esto no sería verdad si Cabal hizo un mejor trabajo, pero eso no es realidad en este momento. –