【问题标题】:How to completly remove packages installed by cabal?如何完全删除 cabal 安装的软件包?
【发布时间】:2015-07-10 03:35:45
【问题描述】:

我正在尝试学习 cabal,并且已经测试了几个我自己的小项目,现在我想清理它们。

基本上,如果我在没有sandbox 的情况下工作,我的工作流程是:

  1. 运行cabal init
  2. 编辑src/Mylib.hs,然后编辑mylibname.cabal文件
  3. 运行cabal build
  4. 运行 cabal repl 并测试我的代码
  5. 运行cabal install

现在,我看到了我自己的项目:

  1. 安装到~/.cabal/lib/x86-64-linux-ghc-7.10.1
  2. 注册于~/.ghc/package.conf.d

我可以在我的其他haskell源代码中写import Mylib,所以我认为包安装成功。

那我想卸载包,因为包本身就是无意义的实验代码。

我读了this的文章,谁说:

没有“cabal 卸载”命令。你只能注销 带有 ghc-pkg 的软件包:

 ghc-pkg unregister

所以我跑了

ghc-pkg unregister mylibname 

现在看来,~/ghc/package.conf.d 中的包已注销,但~/.cabal/lib/x86-64-linux-ghc-7.10.1 中仍有已编译的库。

那么,我怎样才能完全删除我的项目,我可以只使用rm -rf~/.cabal 中的库吗?

【问题讨论】:

    标签: haskell cabal


    【解决方案1】:

    您可以自己从包目录中删除文件。但是,没有提供这样做的命令的原因是,通常不能保证某些东西可能不会在其他地方与它们相关联,因此此类删除可能会导致损坏。也就是说,如果您真的需要,还有一个工具可以为您执行删除操作。

    http://hackage.haskell.org/package/cabal-uninstall

    还有一个功能更多的工具,它还可以让您找出哪些包没有反向依赖,因此至少没有其他中断:

    https://github.com/iquiw/cabal-delete

    【讨论】:

    • 多么懒惰的包管理器实现。这是一种非常糟糕的懒惰。我知道很多人干脆放弃了 Haskell,因为包管理太难处理了。我们需要抽象出这些问题。
    • @PhilippeFanaro - 可能是现在很多人使用 Stack 的原因,但我个人更喜欢 Cabal,因为它不会在背后咬我......
    猜你喜欢
    • 2020-02-02
    • 1970-01-01
    • 2014-07-29
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 2022-01-17
    • 1970-01-01
    相关资源
    最近更新 更多