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

Везде, где устанавливается платформа GHC/Haskell

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

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

Edit2: До сих пор мы имеем:

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

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

Изменить 3:
OS X:
~/Library/Haskell

Linux:
??

Окна
??

4b9b3361

Ответ 1

Пришло время удалить платформу Haskell на OS X. Большинство из них очищается через Uninstaller:

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

Ответ 2

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

uninstall-hs

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

uninstall-hs --help

для дополнительных параметров.


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

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

#!/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, тогда другие учетные записи также нуждаются в очистке. (Повторите строки, содержащие ~.)

Ответ 3

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

Если вы использовали 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 

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

Надеюсь, вам это поможет.

Ответ 4

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