5

yesod暇なときにWebについて少し学び、Haskellで少し遊ぶためにインストールしたいのですが、そうするときは次のようになります。

> 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無理そうです。

4

1 に答える 1

8

Crypto-APIメンテナはこちら。

問題

問題は、パッケージが相互に排他的であるということです。最新のcprng-aesにはcrypto-apiバージョンが必要>= 0.8です。最新のかせにはcrypto-apiが必要0.6.*です。ですから、私たちが望んでいるのは、パッケージを更新するためのかせ開発者(私が電子メールで送信します)です。

今のところ

それまでは、問題のパッケージの古いバージョンをインストールする必要があります。次のようなものを試してください:

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

構文は正しいと思います。そうでない場合は、いつでも実行できます。

cabal install yesod crypto-api-0.6.4 cprng-0.2.1

コミュニティはこれをどのように回避できますか

長期的には、上記の場合と同様に、cabalが改善され、互換性のあるバージョンが自動的に見つかることを願っています。誰もが言及し、誰も実装していないこのようなカバールの改善がなければ、パッケージメンテナはビルド深度の一貫した下限を維持しようとするのが良いでしょう。cprng-aesがまだ受け入れられcrypto-api >= 0.5ている場合、これはcabalによってインストールされたと思います。これはパッケージメンテナに尋ねるのは少し大変ですが、CPPと{MAX,MIN}_VERSIONcabalが提供するマクロを使用して行うことができます。

編集:更新 フェリペはかせを更新し、ハッキングにアップロードしました。Michaelはクライアントセッションを更新しました。彼はYesodのメンテナであり、すでに電子メールの会話に関与しているので、すぐにハッキングにアップロードすると確信しています。このメッセージを読むまでに問題を修正する必要があります。実行するだけです。

 cabal update ; cabal install yesod

振り返ってみると、crypto-apiのメジャーバージョンのバンプがコミュニティの残りの部分にどれほどのトラフィックを引き起こしているのかがわかります。問題の処理方法がわかりません。「この変更を加えても誰も影響を受けない」ことを観察し、PVPを破るだけだったかもしれません。OTOH、私がPVPに従わなかったときに誰かのコードを破った場合、彼らには動揺する正当な理由があります。コミュニティのコメントはありますか?

于 2011-10-22T15:03:50.623 に答える