Надеюсь, вы были достаточно мудры, чтобы ничего не сломать в вашей глобальной базе данных пакетов.Поломка там может легко означать, что переустановка GHC необходима.Итак, давайте предположим, что поломка ограничена пользовательским пакетом db (за исключением, возможно, одного или двух пакетов в глобальном теневом копировании пользовательских пакетов).Если повреждены только несколько пакетов, вы можете исправить вашу настройку, отменив регистрацию нарушающих пакетов,
$ ghc-pkg unregister --user borken
, которые часто будут жаловаться на то, что незарегистрированная borken сломает другие пакеты.Пытаетесь ли вы отменить регистрацию этих первых или немедленно отменить регистрацию с помощью --force
и иметь дело с вновь разбитыми впоследствии, в основном вопрос выбора. Удостоверьтесь, что вы отменяете регистрацию пакетов только от пользователя db. Если что-то не слишком мрачно, после отмены регистрации нескольких пакетов ghc-pkg check
сообщит, что больше не будет сломанных пакетов.
Если нас другой стороны, большая часть пакетов повреждена, возможно, будет проще полностью стереть пользовательскую базу данных, $ rm -rf ~/.ghc/ghc-version/package.conf.d
или аналог в других ОС.
В любом случае вы потеряете пакеты, которые вам все еще нужныиспользовать, поэтому вы попытаетесь переустановить их, не ломая ничего заново.Запустите
$ cabal install world --dry-run
, который попытается создать согласованный план установки для всех пакетов, установленных с cabal-install
.Если этого не произойдет, он распечатает причины, после чего вы сможете исправить проблемы, добавив ограничения к пакетам, перечисленным в файле мира (~/.cabal/world
) - например, хотя у меня нет сломанных пакетов (согласно ghc / ghc-pkg, cabal install world --dry-run
сказал мне, что не может настроить vector-algorithms-0.5.2
, что зависит от vector >= 0.6 && < 0.8
(у меня установлен vector-0.7.1
).Причина в том, что hmatrix-0.12.0.1
требует vector >= 0.8
.Замена -any
«ограничения» на hmatrix на файл «<0,12» в мировом файле привела к чистому плану установки. <br>Таким образом, после небольшого возмущения с ограничениями в мировом файле, вы получите план установкииз кликиПроверьте, будет ли это переустанавливать какие-либо пакеты, которые у вас уже есть (установка более новой версии, вероятно, в порядке, переустановка той же версии означает проблемы).Если вы довольны планом установки Кабала, cabal install world
и варите хороший чайник, пока GHC занят.Выполните ghc-pkg check
еще раз, чтобы убедиться, что все в порядке.
Полезный совет: если вы не знаете, что влечет за собой установка пакета, всегда сначала используйте --dry-run.
Если вы разбили свою глобальную базу данных пакетов, выполнив глобальные установки с помощью cabal, стратегия отмены регистрации нарушителей может сработать, но она также может безвозвратно сломать ваш ghc, что зависит от того, что сломано, каким образом,Если вы сломали свою глобальную базу данных, установив пакеты из своего дистрибутива ОС, установите новый GHC, прокляните дистрибутивы и постарайтесь помочь им предотвратить дальнейшие подобные события. Команда
A cabal repair
была бы очень хорошаНо, к сожалению, в настоящее время восстановление сломанной установки требует гораздо больших усилий.