2015-09-22 3 views
1

Желаю, если кто-нибудь скажет мне шаги, необходимые для установки gloss-examples в песочнице вместе со всеми ее зависимостями. Вот что я пытался:haskell cabal sandbox как установить пакеты?

Я скачал gloss-examples с hackage.

Когда я запускал команду, после изменения в ~/gloss/gloss-examples-1.9.4.1

~/gloss/gloss-examples-1.9.4.1$cabal sandbox init 

это удалось, так что я выдал команду

~/gloss/gloss-examples-1.9.4.1$cabal install --only-dependencies 

, но потом я получил следующие ошибки:

Resolving dependencies... 
cabal: Could not resolve dependencies: 
trying: gloss-examples-1.9.4.1 (user goal) 
next goal: base (dependency of gloss-examples-1.9.4.1) 
rejecting: base-4.5.0.0/installed-c8e... (conflict: gloss-examples => 
base==4.8.*) 
rejecting: base-4.8.1.0, base-4.8.0.0, base-4.7.0.2, base-4.7.0.1, 
base-4.7.0.0, base-4.6.0.1, base-4.6.0.0, base-4.5.1.0, base-4.5.0.0, 
base-4.4.1.0, base-4.4.0.0, base-4.3.1.0, base-4.3.0.0, base-4.2.0.2, 
base-4.2.0.1, base-4.2.0.0, base-4.1.0.0, base-4.0.0.0, base-3.0.3.2, 
base-3.0.3.1 (constraint from non-upgradeable package requires installed 
instance) 
Dependency tree exhaustively searched. 

Note: when using a sandbox, all packages are required to have consistent 
dependencies. Try reinstalling/unregistering the offending packages or 
recreating the sandbox. 

Как установить этот пакет gloss-examples и все его depe только в песочнице? Думаю, я понимаю, что песочница cabal позволяет установить любой произвольный пакет со всеми зависимостями (некоторые или все они противоречат глобально установленным пакетам), установленным в отдельном каталоге. Возможно ли это? Я думаю, что у меня что-то не хватает. Является ли это подходящим прецедентом для cabal sandbox? Видя следующее

Note: when using a sandbox, all packages are required to have consistent dependencies.

Есть ли разница между conflicting dependencies и not consistent dependencies?

Я пробовал много учебников, включая this, но не мог понять, как использовать песочницу cabal.

+0

Какая версия GHC работает? – dfeuer

+0

Вам не нужно загружать tarball из Hackage для установки пакетов в песочнице. Просто сделайте «cabal sandbox init», чтобы создать песочницу, а затем «cabal install gloss-examples» (или что-то еще, что вы хотите) из того же каталога. – duplode

+1

@duplode, из-за того, что им нужен пакет примеров, я предположил, что они могут захотеть создать изолированную среду для зависимостей, а затем построить пакет с различными модификациями, а не устанавливать его. – dfeuer

ответ

2

Мне кажется, что вы загрузили версию gloss-examples, которая несовместима с вашей версией библиотеки base. Есть два способа исправить это:

  1. Скачать версию (предположительно старая одна), которая совместима с вашей base библиотеки. The contents page for the package on Hackage имеет длинный список доступных версий в верхней части. Также можно использовать cabal fetch для этого — Я не уверен.

  2. Обновить GHC чтобы получить новый base. Обычно вы не можете обновить base без обновления GHC.

+0

спасибо за указание зависимости «base». Это только «база» или какие другие зависимости жестко связаны с GHC? – mntk123

+0

@ mntk123, я не совсем уверен.'base' на самом деле не является полностью жестким, я не думаю, но он довольно сильно связан в —. Это зависит от достаточно тонких деталей, что маловероятно, что две основные версии' base' будут работать с любым основным версия GHC (например, база 4.7 идет с GHC 7.8, база 4.8 идет с GHC 7.10), и могут быть проблемы между второстепенными версиями. Самый сложный пакет - 'ghc-prim', который следует рассматривать как * часть * компилятора. – dfeuer

+0

Пакет 'container' довольно тесно связан, по крайней мере, для некоторых целей, потому что пакет' ghc' (да, это также довольно жестко) предоставляет некоторые структуры компилятора как контейнеры (как я понимаю). Могут быть и другие. – dfeuer