Кабал-песочница использует пакеты системного уровня

Я пытаюсь запустить haskelldb-demo

cabal sandbox init && cabal install --only-dependencies

Ему нужен HDBC-postgresql-2.2.3.1, для которого нужна базовая версия пакета base>=3 && <4.5. В моей системе установлено base пакета версии 4.7+.

Я использую песочницу cabal, но установка cabal по-прежнему ссылается на базовый пакет (v4.7.0.2) из ​​глобального репозитория и отклоняет все версии HDBC-postgresql.

rejecting: HDBC-postgresql-2.2.3.1 (conflict: base==4.7.0.2/installed-bfd...,
HDBC-postgresql => base>=3 && <4.5)

почему Кабал относится к пакетам системного уровня, несмотря на то, что я делаю песочницу?


person Community    schedule 03.07.2015    source источник


Ответы (1)


Cabal всегда использует глобальную базу данных пакетов. Песочница означает, что вы не используете базу данных пользовательских пакетов. Предположительно, чтобы убедиться, что у вас есть базовые пакеты и ghc.

Если у вас есть несоответствие в базе, это означает, что пакет, который вы пытаетесь установить, несовместим с вашей версией GHC. Я бы не стал устанавливать разные версии base.

Похожие вопросы (без четких ответов):

Как получить клику игнорировать глобальную базу данных пакетов при использовании песочницы

cabal sandbox v. global package db

person JP Moresmau    schedule 03.07.2015
comment
Также возможно, что пакет на самом деле будет прекрасно работать с более новой версией base, если только он не будет иметь ограничения base < 4.5. ОП может попробовать добавить --allow-newer=base. - person Reid Barton; 03.07.2015