2011-10-22 82 views
5

我想安裝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 

,但我想我已經安裝

正確的包
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是必需的,這似乎是不可能的。

+0

+1和fav'd。我今天恰好就是這個問題,我解決不了,也沒有找到任何東西。操作系統和版本?我正在使用Ubuntu 11.10 – delnan

+0

我正在使用debian測試,使用'haskell-platform-2011.2.0.1'和​​'cabal-0.10.2-3' – epsilonhalbe

回答

8

Crypto-API維護者在這裏。

的問題

的問題是包是互斥的。最新的cprng-aes需要crypto-api版本>= 0.8。最新的skein需要crypto-api 0.6.*。所以我們想要發生的是絞線開發者(我將通過電子郵件發送)來更新軟件包。

FOR NOW

在那之前,你需要安裝舊版本有問題的包。嘗試類似:

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

我認爲語法是正確的。如果沒有,你總是可以做:

cabal install yesod crypto-api-0.6.4 cprng-0.2.1 

如何能在社區避免這種

從長遠來看,我希望陰謀會變得更好,自動查找兼容的版本,因爲我做了以上。除了這些改進之外,每個人都提到並且沒有人提供這些改進,這對於軟件包維護人員來說是非常好的,可以在構建階段保持一致的下限。如果cprng-aes仍然接受crypto-api >= 0.5那麼我認爲這將由cabal安裝。這對於軟件包維護者來說有點難度,但他們可以使用CPP和cabal提供的{MAX,MIN}_VERSION宏來完成。

編輯:更新 Felipe已更新skein並上傳到hackage。 Michael已經更新了客戶會議,並且由於他是Yesod的維護人員,並且已經參與了電子郵件對話,我相信他會很快將其上傳到hackage。事情應該由你讀到這個消息的時間是固定的,只需要運行:

cabal update ; cabal install yesod 

經過思考,我看到加密API多少流量主要版本顛簸如何引起社會的其餘部分。我不知道如何處理這個問題。我可以剛剛觀察到「如果我做出這樣的改變,沒有人會受到影響」,只是打破PVP。 OTOH,如果我沒有按照PVP的規定打破某些人的密碼,那麼他們有一個合法的理由不高興。任何社區意見?

+1

沒有上限('0.6。*'就像'<0.7 '''就像你爲'cprng-aes'提出的建議可以另一方面導致其他問題,如編譯將失敗,因爲可能新的'cprng-aes 0'。8'已經刪除了待安裝包使用的功能。 – Tarrasch

+1

@tarrasch沒錯,但人們普遍認爲有一個硬性的上限會導致更多的故障比它阻止。如果卡巴爾做得更好,這不會是事實,但現在這不是現實。 –