вопросы установки yesod - PullRequest
       19

вопросы установки yesod

5 голосов
/ 22 октября 2011

Я хочу установить yesod, чтобы немного узнать о сети и немного поиграть с 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, что кажется невозможным.

1 Ответ

8 голосов
/ 22 октября 2011

Сопровождающий 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}_VERSION, предоставленные cabal.

РЕДАКТИРОВАТЬ: ОБНОВЛЕНИЕ Фелипе обновил моток и загрузил его в хакерскую сеть. Майкл обновил клиентскую версию, и, учитывая, что он является сопровождающим Yesod и уже участвует в обсуждениях по электронной почте, я уверен, что он скоро загрузит его для взлома. К моменту прочтения этого сообщения все должно быть исправлено, просто запустите:

 cabal update ; cabal install yesod

Подумав, я вижу, сколько ударов основной версии трафика в crypto-api вызывают остальное сообщество. Я не уверен, как справиться с проблемой. Я мог только что заметить, что «никто не пострадает, если я сделаю это изменение» и просто порвать с PVP. OTOH, если я нарушу чей-то код, когда не смогу следовать PVP, у них есть веская причина расстраиваться. Есть комментарии сообщества?

...