Мои пакеты для такси - FUBAR; как я могу их очистить и начать?

Я забыл включить создание библиотек для профилирования в моем ~/.cabal/config, прежде чем устанавливать кучу пакетов на новом компьютере, и теперь --reinstall world, чтобы попытаться исправить ситуацию, оставил все сломанным (естественно).

Я думаю, что лучше использовать свое время, чтобы просто очистить все. Как это сделать правильно?

Ответ 1

Cabal не отслеживает, что он установил, он просто использует механизм библиотеки ghc (или какой-либо другой компилятор, если вы не используете ghc), поэтому вы можете использовать rm -r ~/.ghc для удаления всех локально установленных библиотек.

Если у вас установлено несколько ghc, и вы хотите удалить только libs для определенного ghc, удалите подкаталог, соответствующий любому ghc, который вы хотите удалить.
Например, я могу удалить все, что я установил для ghc-7.6.0, с помощью rm -r ~/.ghc/x86_64-linux-7.6.0.20120810
Вы также можете использовать это, чтобы сохранить свою ghci_history, если хотите.

ll ~/.ghc/
total 24
-rw-r--r-- 1 johnl johnl 2300 Aug 21 11:47 ghci_history
drwxr-xr-x 3 johnl johnl 4096 Jun 17 19:09 x86_64-linux-6.12.3
drwxr-xr-x 3 johnl johnl 4096 May 17 08:17 x86_64-linux-7.2.1
drwxr-xr-x 3 johnl johnl 4096 May 16 17:34 x86_64-linux-7.4.1
drwxr-xr-x 3 johnl johnl 4096 Jun 15 08:21 x86_64-linux-7.4.2
drwxrwxr-x 3 johnl johnl 4096 Aug 15 12:37 x86_64-linux-7.6.0.20120810

Изменить: ~/.cabal/world - список установленных пакетов с ограничениями версии, указанными пользователем. Таким образом, в большинстве случаев он будет включать, например, mtl -any. Если вы установили пакеты с определенными версиями, например, выпустив cabal install mtl-2.1.1, он будет записывать эту версию. Вы должны уметь либо удалять мировой файл, либо начинать заново, или если вы посмотрите на него, а зависимости приемлемы, вы можете попробовать только запустить cabal install world. Или вы могли бы игнорировать его, а не использовать поддержку поддержки кабала (что я делаю).

Ответ 2

Эта ghc-pkg- reset оболочка script очищает как ~/.ghc/, так и ~/.cabal/несколько более выборочно. (И сопровождающий ghc-pkg-clean script может помочь восстановить из запутанной установки пакета, возможно, избегая reset.) Я нахожу их полезными.