Обновление пакетов, установленных в песочнице
У меня возникли проблемы с пониманием того, как обновить пакеты внутри песочницы. Я хотел бы обновить 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/
папки, но это требует немного больше "хирургии". Если ваши зависимости просто огромны, и вам нужно делать это часто, ядерный вариант не слишком раздражает.