Cabal:`cabal update`在哪里存储其包裹清单?

时间:2014-09-12 08:08:12

标签: haskell cabal

(我在OS X 10.9上)

我跑了这个:

$ cabal update
$ cabal install haskell-platform 
cabal: There is no package named 'haskell-platform'.
You may need to run 'cabal update' to get the latest list of available packages.

我用用户安装了cabal-install:

$ cabal install --user cabal-install
$ which cabal
/Users/sambo/.cabal/bin/cabal

用我在网上发现的Haskell装置进行核对后:

$ sudo rm -rf /Library/Frameworks/GHC.framework
$ sudo rm -rf /Library/Frameworks/HaskellPlatform.framework
$ sudo rm -rf /Library/Haskell
$ sudo rm -rf /usr/share/doc/ghc
$ sudo rm /usr/share/man/man1/ghc.1
$ sudo rm -rf /var/db/receipts/org.haskell.HaskellPlatform.*
$ sudo rm -rf ~/.cabal
$ sudo rm -rf ~/.ghc
$ sudo 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 ' ' | \
    xargs sudo rm -f

我可以通过硬盘重新安装Haskell,我已经安装了自制软件。这是我试图做的,但似乎很拙劣。

1 个答案:

答案 0 :(得分:2)

我真的不明白你的问题,但是Cabal将包裹列表存储在:

.cabal/packages/hackage.haskell.org/00-index.tar.gz.etag
.cabal/packages/hackage.haskell.org/00-index.cache
.cabal/packages/hackage.haskell.org/00-index.tar.gz
.cabal/packages/hackage.haskell.org/00-index.tar

这是管理Haskell安装的技巧:不要安装Haskell平台。使用您的软件包管理器(我猜这是Mac上的brew),安装最新的GHC(7.8.3),Cabal和cabal-install。之后再次运行cabal updatecabal install Cabal cabal-install,只是为了更新您的Cabal安装,以防它已经过时。然后删除系统范围内安装的Cabal,并将~/.cabal/bin添加到您的路径中。您现在应该可以使用cabal沙盒功能,将所有内容安装在沙箱中。

更新:如果您的包管理器没有GHC 7.8.3:只需安装它拥有的任何版本,并按照我的描述安装Cabal和cabal-install。然后删除包管理器的GHC并从http://www.haskell.org/ghc/download_ghc_7_8_3安装最新的预编译版本。

如果包管理器的GHC不够新,无法编译最新的Cabal和cabal-install,那么你需要启动库,从较旧的GHC和较旧的Cabal开始,然后更新GHC,使用最新的GHC安装更新的Cabal和较旧的Cabal等。

只是不安装Haskell平台,这不值得痛苦。