2011-10-22 16 views
5

chcę zainstalować yesod aby dowiedzieć się trochę o internecie i bawiące się trochę z Haskell w wolnym czasie, ale kiedy zrobić:problemy z instalacją 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 

ale myślę, że mam prawo pakiety zainstalowane

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 

nie wiem zbyt wiele o cabal install ale wydaje się, że zarówno crypto-api >=0.8 i <7 są wymagane, co wydaje się niemożliwe.

+0

+1 i ulubione. Miałem właśnie ten problem właśnie dzisiaj, nie mogłem go rozwiązać i niczego nie znalazłem. OS i wersja? Używałem Ubuntu 11.10 – delnan

+0

Używam testów Debiana, z 'haskell-platform-2011.2.0.1' i' cabal-0.10.2-3' – epsilonhalbe

Odpowiedz

8

Opiekun Crypto-API tutaj.

PROBLEM

Problemem jest to, że pakiety są wzajemnie się wykluczają. Najnowsze cprng-aes wymaga wersji crypto-api >= 0.8. Najnowszy motek wymaga crypto-api 0.6.*. Chcemy więc, aby twórca skein (którego będę e-mailem) zaktualizował pakiet.

DO TERAZ

Do tego czasu, trzeba zainstalować starsze wersje pakietów w pytaniu. Spróbuj coś takiego:

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

Myślę, że składnia ma rację. Jeśli nie zawsze można zrobić:

cabal install yesod crypto-api-0.6.4 cprng-0.2.1 

JAK MOŻE Unikaj WSPÓLNOTA TO

W dłuższej perspektywie mam nadzieję Cabal będzie lepiej i automatycznie znalezieniu kompatybilne wersje, jak ja do powyższych. Bez takich ulepszeń, które wszyscy wymieniają i nikt ich nie implementuje, dobrze byłoby, aby opiekunowie pakietów starali się utrzymywać stałą niższą granicę na swoich pakietach build-deps. Jeśli cprng-aes nadal akceptuje crypto-api >= 0.5 to myślę, że zostałoby to zainstalowane przez cabal. Jest to o wiele trudniejsze zadanie dla opiekunów pakietów, ale mogą to zrobić za pomocą CPP i makr {MAX,MIN}_VERSION dostarczanych przez cabal.

EDYCJA: AKTUALIZACJA Felipe zaktualizował skein i załadował do hackage. Michael zaktualizował sesję klienta i widząc, że jest opiekunem Yesod i już uczestniczy w rozmowach przez e-mail, jestem pewien, że wkrótce prześle go do hackage. Wszystko powinno być ustalone w momencie czytasz tę wiadomość, wystarczy uruchomić:

cabal update ; cabal install yesod 

Po zastanowieniu, widzę, jak dużo ruchu główne stłuczki wersja krypto-API powodować resztę społeczności. Nie jestem pewien, jak sobie z tym poradzić. Mogłem właśnie zauważyć, że "nikt nie będzie dotknięty, jeśli dokonam tej zmiany" i po prostu zerwie z PVP. OTOH, jeśli złamie się kod kogoś, gdy nie będę postępował zgodnie z PVP, będą mieli uzasadniony powód, by się zdenerwować. Wszelkie komentarze społeczności?

+1

Brak górnych granic ('0.6. *' Jest jak '<0.7 ') tak jak sugerujesz dla' cprng-aes' może z drugiej strony powodować inne problemy, jak kompilacja nie powiedzie się, ponieważ być może nowe 'cprng-aes 0.8's usunęło funkcję, którą wykorzystał zainstalowany pakiet. – Tarrasch

+1

@tarrasch Prawda, ale ogólnie uważa się, że posiadanie twardej górnej granicy powoduje więcej błędów niż im zapobiega. Nie byłoby to prawdą, gdyby Cabal wykonał lepszą robotę, ale teraz to po prostu nie jest rzeczywistość. –