2014-12-03 83 views
6

当我运行cabal install [pkg]和PKG是一个命令行可执行程序,而不是图书馆,经常提醒我这个消息:“警告:下面的包可能会被重新安装被打破的”cabal通过沙盒从Hackage安装可执行文件?

我总是用--force-reinstalls选项继续。

但是由于我安装的是可执行文件而不是库,是否有办法运行cabal install来隔离cabal沙盒中的构建过程,然后在~/.cabal/bin中安装可执行文件?或者这是我需要写一个自定义的bash脚本的东西?

回答

8

我总是创造我的工具沙盒,如hooglepointfreehaddockghc-modhlintshake,和他人之间stylish-haskell。只需按照下列步骤操作:

  • 在您选择
  • 运行cabal install [pkg1 [pkg2 ...]]
  • 完成后的位置创建cabal sandbox init一个小集团沙箱,从.cabal-sandbox/bin文件夹所需的可执行文件复制到你的~/.cabal/bin/文件夹。
  • 运行cabal sandbox delete删除您不再需要的可能非常大的沙箱。

这些可执行文件通常是完全独立的,因此您可以根据它们在沙箱中请求的依赖关系来构建它们,然后将它们移动到您想要的位置。这绝对有助于保持系统范围内的安装清洁并避免冲突。

+0

这是否意味着没有自动方式来复制可执行文件? – Sam 2015-10-13 14:06:39

+0

@Sam'cp .cabal-sandbox/bin/*〜/ .cabal/bin /'不是很难。这不是cabal的一个特性,他们不认为你使用沙箱来构建这些工具。他们不会假设任何东西,你的沙箱是你自己的,并且考虑到这是我通常在安装Haskell后执行的一个步骤,我没有看到用于将它添加到cabal的用例。 – bheklilr 2015-10-13 14:09:55

相关问题