Везде, где установлена ​​платформа GHC / Haskell - PullRequest
26 голосов
/ 30 июля 2011

Предположим, я хочу полностью переустановить GHC / HP. Я хочу (как для суеверия, так и для всего остального) удалить все и вся из предыдущих установок. Что мне на самом деле нужно удалить (и где)?

Изменить: Я на OSX, но мне более любопытно, если эта информация доступна в целом, для всех систем.

Edit2: Пока у нас есть:

OSX:
/Library/Frameworks/GHC.framework/
~ / .Cabal /
/ usr / bin / - символические ссылки

Я добавлю к этому (на основе «префикса», определенного здесь: http://www.vex.net/~trebla/haskell/sicp.xhtml#storage):
Префикс / Библиотека /
Префикс / доля /
Префикс / bin /
Префикс / доля / DOC /
/ usr (/ local) / lib / [ghc-version]
/ usr (/ local) / share / doc / ghc / html / library / - документация
/ usr (/ local) / share / doc / ghc /
/ usr (/ local) / bin
/ Вар / Библиотека / [GHC-версия]
/ И т.д. / [GHC-версия]
~ / .Ghc /

Редактировать 3:
OS X:
~ / Библиотека / Haskell

Linux:
??

Windows
??

Ответы [ 4 ]

22 голосов
/ 09 августа 2011

Недавно пришлось удалить Haskell Platform на OS X. Большинство из них очищены с помощью деинсталлятора:

sudo /Library/Frameworks/GHC.framework/Versions/Current/Tools/Uninstaller

Их необходимо очистить вручную:

rm -r ~/.cabal
rm -r ~/.ghc
rm -r ~/Library/Haskell

В качестве альтернативы, как описано в

/Library/Haskell/doc/start.html

теперь есть пользовательская команда удаления с параметрами,

/Library/Haskell/bin/uninstall-hs

В общем случае можно задокументировать файлы, созданные любым действием (установщиком, ...), заключив действие в рабочий каталог в скобки с помощью

echo >timestamp
[activity]
sudo find -x / -newer timestamp -print >snapshot.txt
14 голосов
/ 25 сентября 2011

Если вы установили платформу Haskell примерно с 2012 года в OS X, просто запустите

uninstall-hs

и внимательно прочитайте, что он выводит. Вам нужно будет запустить его снова с параметрами, которые он предлагает вам. Run

uninstall-hs --help

для дополнительных опций.


Ниже приведен мой первоначальный ответ, который все еще будет работать, но не предлагает столько вариантов, и он немного "ветреный":

Предупреждение: Этот скрипт является экстремальным. Он удалит даже ваши пользовательские файлы конфигурации для GHC и Cabal, а также созданные вами исполняемые файлы, которые все еще находятся в ~/Library/Haskell или ~/.cabal. Будьте осторожны; рассмотрите, что это собирается сделать; иметь резервные копии; будьте осторожны!

#!/bin/bash
set -x

sudo rm -rf /Library/Frameworks/GHC.framework
sudo rm -rf /Library/Frameworks/HaskellPlatform.framework
sudo rm -rf /Library/Haskell
rm -rf ~/.cabal
rm -rf ~/.ghc
rm -rf ~/Library/Haskell
find /usr/bin /usr/local/bin -type l | \
  xargs -If sh -c '/bin/echo -n f /; readlink f' | \
  egrep '//Library/(Haskell|Frameworks/(GHC|HaskellPlatform).framework)' | \
  cut -f 1 -d ' ' > /tmp/hs-bin-links
sudo rm -f `cat /tmp/hs-bin-links`

Вы можете добавить строки, чтобы сохранить и восстановить файлы конфигурации, например:

mv ~/.cabal/config /tmp/cabal-config 2>/dev/null || true
mv ~/.ghc/gchi.conf /tmp/ghci-config 2>/dev/null || true

и

mkdir ~/.cabal
mkdir ~/.ghc
cp /tmp/cabal-config ~/.cabal/config 2>/dev/null || true
cp /tmp/ghci-config ~/.ghc/gchi.conf 2>/dev/null || true

Скобка rm строк с этим. Хотя вы можете хотеть или не хотеть свою старую ~/.cabal/config, если вы переходите на более новую версию.

Обратите внимание, что это относится только к домашнему каталогу текущего пользователя. Если у вас есть несколько учетных записей пользователей, которые все используют Haskell, то другие учетные записи также потребуют очистки. (Повторите строки, включающие ~.)

2 голосов
/ 05 марта 2012

uninstall-hs выполняет часть работы за вас; Я не уверен, сколько.

2 голосов
/ 31 июля 2011

Я на OSX (лев атм).У меня есть GHC в /Library/Frameworks/GHC.framework/ (текущая и предыдущие версии).Есть также некоторые символические ссылки в / usr / bin, но они будут заменены новой установкой.

Если вы использовали cabal (локально) для установки пакетов, вы также можете захотеть очистить ~ / .cabal,Если у вас недавно появилось Cabal, вы можете легко переустановить все пакеты для «новой» версии GHC, используя мир установки cabal, а затем искать каталоги, соответствующие предыдущей версии GHC, которая вам понравилась:

for package in `ls ~/.cabal/lib/`; do 
   if [ ! -d ~/.cabal/lib/${package}/ghc-7.0.3 ]; then 
       echo $package; 
   else 
       echo "OK for $package"; 
   fi;
done 

Этидолжно быть безопасно удалить.

Надеюсь, это вам чем-нибудь поможет.

...