2011-10-22 13 views
5

tôi muốn cài đặt yesod học một chút về web và chơi một chút với Haskell trong thời gian rảnh rỗi nhưng khi tôi làm:vấn đề cài đặt 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 

nhưng tôi nghĩ rằng tôi có các gói phải được cài đặt

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 

tôi không biết nhiều về số cabal install nhưng có vẻ như cả hai yêu cầu crypto-api >=0.8<7 là điều bắt buộc.

+0

+1 và thích. Tôi đã có chính xác vấn đề đó ngay hôm nay, tôi không thể giải quyết nó và không tìm thấy gì cả. Hệ điều hành và phiên bản? Tôi đang sử dụng Ubuntu 11.10 – delnan

+0

Tôi đang sử dụng thử nghiệm debian, với 'haskell-platform-2011.2.0.1' và' cabal-0.10.2-3' – epsilonhalbe

Trả lời

8

Trình duy trì Crypto-API tại đây.

CÁC VẤN ĐỀ

Vấn đề là các gói loại trừ lẫn nhau. Cprng-aes mới nhất yêu cầu phiên bản mã hóa-api >= 0.8. Mới nhất của skein yêu cầu crypto-api 0.6.*. Vì vậy, những gì chúng tôi muốn xảy ra là nhà phát triển skein (người mà tôi sẽ e-mail) cập nhật gói.

CHO DOANH NGHIỆP

Till sau đó, bạn sẽ cần phải cài đặt phiên bản cũ của các gói trong câu hỏi. Hãy thử một cái gì đó như:

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

Tôi nghĩ rằng cú pháp đó là đúng. Nếu không, bạn luôn có thể làm:

cabal install yesod crypto-api-0.6.4 cprng-0.2.1 

CÁCH CAN CỘNG ĐỒNG tránh điều này

Về lâu dài Tôi hy vọng cabal sẽ trở nên tốt hơn và tự động tìm phiên bản tương thích, như tôi đã làm cho ở trên. Ngắn của cải tiến cabal như vậy, mà tất cả mọi người đề cập và không ai thực hiện, nó sẽ là tốt của người bảo trì gói để cố gắng và giữ một ràng buộc thấp hơn phù hợp về xây dựng-deps của họ. Nếu cprng-aes vẫn chấp nhận crypto-api >= 0.5 thì tôi nghĩ điều này sẽ được cài đặt bởi cabal. Đây là một chút nhiều để yêu cầu của người bảo trì gói, nhưng họ có thể làm điều đó bằng cách sử dụng CPP và các macro {MAX,MIN}_VERSION được cung cấp bởi cabal.

CHỈNH SỬA: CẬP NHẬT Felipe đã cập nhật tin nhắn và tải lên để tấn công. Michael đã cập nhật khách hàng và, khi anh ấy là người bảo trì Yesod và đã tham gia vào các cuộc hội thoại qua email, tôi chắc chắn anh ấy sẽ tải nó lên để tấn công sớm. Những điều cần được khắc phục vào thời điểm bạn đọc thông báo này, chỉ cần chạy:

cabal update ; cabal install yesod 

Trên phản ánh, tôi thấy số lượng giao dịch chính trong mật mã gây ra phần còn lại của cộng đồng. Tôi không chắc chắn cách xử lý vấn đề. Tôi có thể chỉ quan sát thấy rằng "không ai sẽ bị ảnh hưởng nếu tôi thực hiện thay đổi này" và chỉ phá vỡ với PVP. OTOH, nếu tôi phá vỡ mã số của ai đó khi tôi không tuân theo PVP thì họ có lý do chính đáng để khó chịu. Mọi nhận xét của cộng đồng?

+1

Không có giới hạn trên ('0.6. *' Giống như '<0.7 ') giống như bạn đề nghị' cprng-aes' có thể gây ra các vấn đề khác, chẳng hạn như một trình biên dịch sẽ thất bại, vì có lẽ là «cprng-aes» mới.8' đã xóa một chức năng mà gói cài đặt được sử dụng. – Tarrasch

+1

@tarrasch Đúng, nhưng người ta thường tin rằng có một ràng buộc trên cứng gây ra nhiều thất bại hơn nó ngăn cản. Điều này sẽ không đúng nếu cabal làm tốt hơn, nhưng đó không phải là hiện thực. –