У меня возникли проблемы с пониманием того, как обновлять пакеты внутри песочницы. Я хотел бы обновить 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)
Ошибка смотрит на меня, как будто заговорщики пытаются решить зависимости, используя установленную версию esqueleto, esqueleto-1.3.4.5/installed-ac7...
Может кто-нибудь объяснить, как это работает?
Моей интуицией было то, что я должен был использовать --upgrade-dependencies
, но я также пробовал --only-dependencies
и --reinstall
.
'cabal sandbox delete',' cabal sandbox init', 'cabal install -only-dependencies', как обычно я делаю такие вещи. При относительно небольшом наборе зависимостей не требуется много времени для повторного запуска всего этого. В качестве альтернативы вы можете просто удалить старую папку 'equeleto' из папки' .cabal-sandbox/ -package-db/'(я могу быть неточным по этому пути к папке, не могу вспомнить с головы) –
bheklilr
Спасибо bhecklilr - кажется, работает нормально для меня, хотя платформа yesod занимает много времени для компиляции, удаление папки пакета может быть лучшей идеей. Пожалуйста, опубликуйте свой комментарий в качестве ответа, я его подниму. –