【问题标题】:cabal install an executable from Hackage via a sandbox?cabal 通过沙箱从 Hackage 安装可执行文件?
【发布时间】:2014-12-03 14:41:59
【问题描述】:

当我运行 cabal install [pkg] 并且 pkg 是命令行可执行程序而不是库时,它经常用以下消息警告我:“警告:重新安装可能会破坏以下软件包”

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

但是由于我安装的是可执行文件而不是库,有没有办法运行 cabal install 以将构建过程隔离在 cabal 沙箱中,然后在 ~/.cabal/bin 中安装可执行文件?还是我需要为此编写自定义 bash 脚本?

【问题讨论】:

    标签: haskell cabal


    【解决方案1】:

    我总是为我的工具创建一个沙盒,例如 hooglepointfreehaddockghc-modhlintshakestylish-haskell 等。只需按照以下步骤操作:

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

    这些可执行文件通常是完全独立的,因此您可以根据它们在沙盒中请求的依赖项构建它们,然后将它们移动到您想要的任何位置。这绝对有助于保持系统范围内的安装干净且没有冲突。

    【讨论】:

    • 这是否意味着无法自动复制可执行文件?
    • @Sam cp .cabal-sandbox/bin/* ~/.cabal/bin/ 并不难。这不是 cabal 的功能,他们不会假设您正在使用沙箱来构建这些工具。他们真的不假设任何事情,你的沙箱是你自己的,考虑到这是我通常在安装 Haskell 后执行一次的步骤,我没有看到将它添加到 cabal 的用例。
    • 如果你使用 cabal 沙箱,并且安装了类似 hpack 的东西,你如何实际执行它?当我运行hpack 时,它说它找不到命令(因为它很可能不在 PATH 上)。是否有cabal run 之类的命令在沙箱的上下文中运行?
    • 哦,我发现它是cabal exec hpack
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多