cabal help
显示thers不是"卸载"选项.
那么卸载cabal安装的软件包的最佳方法是什么?
% cabal update
% cabal install mighttpd2
Run Code Online (Sandbox Code Playgroud)
mighttpd2已成功安装.但是ghc-pkg无法找到并取消注册:
% ghc-pkg list | grep -i might
% ghc-pkg unregister mighttpd2
ghc-pkg: cannot find package mighttpd2
Run Code Online (Sandbox Code Playgroud)
祝商祺!
>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:
Run Code Online (Sandbox Code Playgroud)
所以ghc-pkg无法看到".cabal/packages/hackage.haskell.org".
您可能没有将Cabal路径作为GHC路径的一部分.
首先,尝试找出GHC包路径是什么,
ghc-pkg list
# displays stuff like "/home/username/.../package.conf.d"
Run Code Online (Sandbox Code Playgroud)
然后,确保Cabal正在写入的一个是活动的.对我来说,Cabal增加了包裹
/home/username/.ghc/x86_64-linux-7.0.4/package.conf.d
Run Code Online (Sandbox Code Playgroud)
如果您的系统上没有这样的目录,请参阅Cabal写的内容.
strace -f -o trace.txt cabal install mighttpd2
grep "package\.cache" trace.txt
Run Code Online (Sandbox Code Playgroud)
然后将包路径添加到此系统环境变量
export GHC_PACKAGE_PATH=NEWPATH:/usr/local/lib/ghc-7.0.3/package.conf.d
Run Code Online (Sandbox Code Playgroud)
再试一次,如果不起作用,请继续执行第3步
查看该目录,看看是否有像这样的文件
mighthttpd2-version-LONGHASHCODE.conf
Run Code Online (Sandbox Code Playgroud)
如果它在那里,那么你可能需要重新安排
ghc-pkg recache --user
Run Code Online (Sandbox Code Playgroud)