2014-03-05 2 views
9

У меня возникли проблемы с пониманием того, как обновлять пакеты внутри песочницы. Я хотел бы обновить 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.

+2

'cabal sandbox delete',' cabal sandbox init', 'cabal install -only-dependencies', как обычно я делаю такие вещи. При относительно небольшом наборе зависимостей не требуется много времени для повторного запуска всего этого. В качестве альтернативы вы можете просто удалить старую папку 'equeleto' из папки' .cabal-sandbox/ -package-db/'(я могу быть неточным по этому пути к папке, не могу вспомнить с головы) – bheklilr

+0

Спасибо bhecklilr - кажется, работает нормально для меня, хотя платформа yesod занимает много времени для компиляции, удаление папки пакета может быть лучшей идеей. Пожалуйста, опубликуйте свой комментарий в качестве ответа, я его подниму. –

ответ

6

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

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

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

+0

Что-то еще, что мне пришло в голову, так это то, что я забыл сначала запустить 'cabal configure'. Мне кажется, что наверняка будет возможно обновить зависимости, не перестраивая все с нуля или удаляя пакет вручную. Я путешествую, но я проверю, работает ли это через день или два. Спасибо –

+0

* ping * это сработало? –

Смежные вопросы