Обновление пакетов, установленных в песочнице

У меня возникли проблемы с пониманием того, как обновить пакеты внутри песочницы. Я хотел бы обновить esqueleto-1.3.4.5 в esqueleto-1.3.5 и изменил мой myapp.cabal зависит от esqueleto >= 1.3.5 && < 1.4,

$ cabal --version cabal-install version 1.18.0.2 using version 1.18.1.2 of the Cabal library $ cabal install --upgrade-dependencies Resolving dependencies... cabal: Could not resolve dependencies: trying: esqueleto-1.3.4.5/installed-ac7... (user goal) next goal: myapp (user goal) rejecting: myapp-0.0.0 (conflict: esqueleto==1.3.4.5/installed-ac7..., myapp => esqueleto>=1.3.5 && <1.4)

Ошибка выглядит для меня так, как будто Cabal пытается разрешить зависимости, используя установленную версию esqueleto, esqueleto-1.3.4.5/installed-ac7... Может кто-нибудь объяснить, как это работает?

Моя интуиция заключалась в том, что я должен использовать --upgrade-dependencies чтобы сделать это, но я также пытался --only-dependencies а также --reinstall,

1 ответ

Самый простой способ, который я нашел, это просто взорвать свою песочницу и начать все сначала.

$ cabal sandbox delete
$ cabal sandbox init
$ cabal install --only-dependencies

Вы также можете удалить конкретный пакет из .cabal-sandbox/<platform>/ а также .cabal-sandbox/<platform>-packages.conf/ папки, но это требует немного больше "хирургии". Если ваши зависимости просто огромны, и вам нужно делать это часто, ядерный вариант не слишком раздражает.

Другие вопросы по тегам