26

假设我想完全重新安装 GHC/HP。我想(尽可能地迷信)从以前的安装中删除任何东西。我实际上需要删除什么(以及在哪里)?

编辑:我在 OSX 上,但我更好奇这些信息是否普遍适用于所有系统。

Edit2:到目前为止,我们有:

OSX:
/Library/Frameworks/GHC.framework/
~/.cabal/
/usr/bin/ -- 符号链接

我将添加(基于此处定义的“前缀”:http ://www.vex.net/~trebla/haskell/sicp.xhtml#storage ):
prefix/lib/
prefix/share/
prefix/bin/
prefix /share/doc/
/usr (/local) /lib/[ghc-version]
/usr (/local) /share/doc/ghc/html/libraries/ -- 文档
/usr (/local) /share/doc/ ghc/
/usr (/local) /bin
/var/lib/[ghc-version]
/etc/[ghc-version]
~/.ghc/

编辑 3:
OS X:
~/Library/Haskell

Linux:
??

窗户:
??

4

4 回答 4

23

最近不得不在 OS X 上删除 Haskell 平台。大多数是通过卸载程序清理的:

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
于 2011-08-09T12:37:41.507 回答
14

如果你从大约 2012 年开始在 OS X 上安装了 Haskell 平台,只需运行

uninstall-hs

并仔细阅读它的输出。您需要使用它为您提供的选项再次运行它。跑

uninstall-hs --help

更多选择。


以下是我的原始答案,它仍然有效,但没有提供那么多选择,而且有点“笨拙”:

警告:这个脚本是极端的。它甚至会删除您为 GHC 和 Cabal 定制的配置文件,以及您构建的仍位于~/Library/Haskellor中的可执行文件~/.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,那么其他帐户也需要清理。(重复涉及 的行~。)

于 2011-09-25T02:50:43.557 回答
2

我在 OSX(狮子自动取款机)上。我在 /Library/Frameworks/GHC.framework/ (当前和以前的版本)中有 GHC。/usr/bin 中也有一些符号链接,但这些将被新安装所取代。

如果您使用 cabal 来(本地)安装软件包,您可能还需要清理 ~/.cabal。如果您有最近的 cabal,您可以使用 cabal install world 轻松重新安装“新” GHC 版本的所有软件包,然后查找与您以前的 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 

这些应该可以安全删除。

希望这对您有所帮助。

于 2011-07-30T20:48:21.253 回答
2

uninstall-hs为你做一些工作;我不确定多少钱。

于 2012-03-05T04:40:14.413 回答