Почему не удается установить aeson-native?

У меня есть две машины Arch (64), на которых я пытаюсь установить yesod. Во-первых, простая «кабала установи йесод» отлично работает. Во-вторых, при построении зависимости от aesod-native я получаю следующую ошибку:

Настройка aeson-native-0.3.3 ...
Библиотека предварительной обработки aeson-native-0.3.3 ...
Сборка aeson-native-0.3.3 ...
[1 из 6] Компиляция данных .Aeson.Functions (Data / Aeson / Functions.hs, dist / build / Data / Aeson / Functions.o)
[2 из 6] Компиляция Data.Aeson.Types (Data / Aeson / Types.hs, dist / build / Data / Aeson / Types.o)

Data / Aeson / Types.hs: 196: 22:
Нет экземпляра для (NFData Object)
возникающего из-за использования rnf'<br> Possible fix: add an instance declaration for (NFData Object)<br> In the expression: rnf o<br> In an equation forrnf ': rnf (Object o) = rnf o
В объявлении экземпляра для `NFData Value '
cabal: Ошибка: не удалось установить некоторые пакеты:
aeson-native-0.3.3 не удалось установить на этапе сборки. Исключением было:
ExitFailure 1

После указанной выше ошибки я выполнил новую установку ghc и удалил каталоги ghc-pkg и .cabal. Опять та же ошибка. Кажется, нет ничего плохого в aeson-native, поскольку он отлично работает в других местах, так что моя среда должна быть как-то виновата. На машине, на которой произошел сбой, я экспериментировал в прошлом с использованием pacman для управления хакерскими библиотеками (в основном для xmonad). Не уверен, имеет ли это значение, но я никогда не был уверен, как / если Кабала и Пакман имеют какое-либо представление о том, что делают друг друга.

GHC - 7.0.3. Я сделал обновление Кабала перед всеми установками. Есть идеи, что может быть не так с этой средой?

Спасибо / O


person jdo    schedule 20.09.2011    source источник


Ответы (2)


Ты не одинок. Это можно исправить:

> cabal install deepseq-1.1.0.2
> ghc-pkg unregister deepseq-1.2.0.1 --force

И тогда вы можете установить любой aeson пакет. Убедитесь, что он действительно deepseq-1.2.0.1 установлен, набрав ghc-pkg list deepseq


У меня тоже была эта ошибка несколько дней назад, но для aeson, а не aeson-native. Тогда я запросил исправление на github, и он уже находится в процессе взлома, хотя, к сожалению, только для aeson, а не aeson-native. Могу я предложить вам попробовать запросить исправление для пакета aeson-native. Приятно отдавать что-то сообществу, попробуйте! :)

person Tarrasch    schedule 20.09.2011
comment
Большое спасибо, что решили эту проблему (и спасибо плакату ниже за более подробное описание того, что произошло на Hackage). Сужение ограничений пакета - это то, что я мог бы решить самостоятельно, а не полностью облажаться. Спасибо всем! - person jdo; 20.09.2011
comment
Рад, что это сработало для вас, и что вы также можете интерпретировать хаммары более информативным ответом. Кстати. Вы можете использовать онлайн-редактор github, чтобы получить действительно большое преимущество для этих однострочных запросов на вытягивание. Вы избегаете целых шагов clone-pull-edit-commit-push-pullrequest. : D - person Tarrasch; 20.09.2011

Object - это просто синоним типа для Data.Map, и похоже, что экземпляр NFData для Data.Map недавно был перемещен из пакета deepseq в containers.

Однако эта новая версия containers, по-видимому, еще не была выпущена на Hackage, поэтому, поскольку вы используете последнюю версию deepseq, экземпляр не найден ни в одном из пакетов.

Я ожидаю, что это скоро будет исправлено. Между тем, у вас должна быть возможность понизить deepseq до версии 1.1.0.2, которая является последней версией до перемещения экземпляра.

person hammar    schedule 20.09.2011