cabal不能卸载包吗?

时间:2011-08-31 03:16:00

标签: haskell

cabal help显示thers is not“uninstall”选项。

然后卸载cabal安装的软件包的最佳方法是什么?

% cabal update
% cabal install mighttpd2

maytpd2已成功安装。然而ghc-pkg找不到&取消注册:

% ghc-pkg list | grep -i might
% ghc-pkg unregister mighttpd2
ghc-pkg: cannot find package mighttpd2 

此致!

>find .cabal | grep -i mighttp
.cabal/share/doc/mighttpd2-2.3.3
.cabal/share/doc/mighttpd2-2.3.3/LICENSE
.cabal/share/mighttpd2-2.3.3
.cabal/share/mighttpd2-2.3.3/sample.conf
.cabal/share/mighttpd2-2.3.3/sample.route
.cabal/packages/hackage.haskell.org/mighttpd2
.cabal/packages/hackage.haskell.org/mighttpd2/2.3.3
.cabal/packages/hackage.haskell.org/mighttpd2/2.3.3/mighttpd2-2.3.3.tar.gz

>ghc-pkg list | grep -i package\.conf
 /usr/local/lib/ghc-7.0.3/package.conf.d:
 /home/sw2wolf/.ghc/i386-freebsd-7.0.3/package.conf.d:

所以ghc-pkg无法看到“.cabal / packages / hackage.haskell.org”。

2 个答案:

答案 0 :(得分:5)

您可能没有将Cabal路径作为GHC路径的一部分。

第1步

首先,尝试找出GHC包路径是什么,

ghc-pkg list
    # displays stuff like "/home/username/.../package.conf.d"

然后,确保Cabal正在写入的一个是活动的。对我来说,Cabal将包裹添加到

/home/username/.ghc/x86_64-linux-7.0.4/package.conf.d

第2步

如果您的系统上没有此类目录,请参阅Cabal写的内容。

strace -f -o trace.txt cabal install mighttpd2
grep "package\.cache" trace.txt

然后将包路径添加到此系统环境变量

export GHC_PACKAGE_PATH=NEWPATH:/usr/local/lib/ghc-7.0.3/package.conf.d

再试一次,如果不起作用,请继续执行第3步

第3步

查看该目录并查看是否有像

这样的文件
mighthttpd2-version-LONGHASHCODE.conf

如果它在那里,那么你可能需要重新安装

ghc-pkg recache --user

答案 1 :(得分:2)

GHC包系统不用于可执行文件,mighttpd2包只构建可执行文件。要卸载它,只需删除程序包的cabal文件中列出的两个可执行文件(mightymkindex)以及两个数据文件(sample.confsample.route)。您可以通过在~/.cabal/config中仔细阅读cabal的配置文件来找到这些文件的安装目录。