Подтвердить что ты не робот

Какое лучшее обходное решение для того, чтобы не иметь "модернизацию"?

Я хочу обновить все пакеты, а не только один с cabal install --upgrade-dependencies.

4b9b3361

Ответ 1

Этот бит хакерской игры работает для меня на OS X:

cabal list --simple-output --installed | awk '{print $1}' | uniq | xargs -I {} cabal install {} --reinstall

EDIT: теперь принудительно переустанавливает и не требует установки пакета более одного раза, когда присутствует более одной версии. Спасибо за комментарии!

EDIT YEARS LATER: теперь, когда существуют песочницы Cabal и Stack, я настоятельно рекомендую не пытаться обновлять пакеты на месте. Вы получите гораздо меньше головных болей, если вместо этого вы можете просто стереть существующую песочницу и переустановить современные зависимости.

Ответ 2

Файл .cabal/world содержит список каждого пакета, который вы установили явно (указан в команде cabal install, а не в зависимости от зависимостей). Обрежьте его, чтобы удалить пакеты, которые полезны только в качестве зависимостей, пакетов, которые устарели, и пакетов с исправлениями версии, которые вы предпочитаете обновлять.

Cabal не знает, как очистить после себя, но вы можете удалить почти все. Следующая команда переустановит из .cabal/packages (кеш tarball):

cp -t bin .cabal/bin/cabal
rm -rf .cabal/{bin,lib,share} .ghc/*-*-*/
ghc-pkg check |&egrep -- '^[A-Za-z0-9-]+-[0-9]' |xargs -n1 --no-run-if-empty ghc-pkg unregister

Теперь переустановите все, что было установлено вручную:

cabal install world --upgrade-dependencies --force-reinstalls