【问题标题】:Cabal install tidal ends with warning阴谋集团安装潮汐以警告结束
【发布时间】:2020-04-28 19:32:21
【问题描述】:

我正在尝试以这种方式在命令行中安装潮汐:

cabal install tidal

但它以这条消息结束:

警告:您要求安装可执行文件,但其中没有可执行文件 目标:潮汐。也许您想使用 --lib 来安装库。

返回:

cabal install tidal --lib

是:

解决依赖关系... 最新的

如果我查看ghk-pkg列表,没有包潮 ... 有人有类似的问题或我做错了什么?


我的环境是:

  • Windows 10 教育版
  • Haskell 8.4.3
  • 阴谋集团 3.2.0.0
  • Ghc 8.10.1

感谢您的帮助。

【问题讨论】:

标签: haskell cabal cabal-install tidalcycles


【解决方案1】:

就像 Stack 很长一段时间,Cabal-install 现在(从 3.2 开始)不再真正安装库了——从某种意义上说,改变计算机的状态,以便 GHC 可以访问库它。这两个工具现在只安装可执行文件。它曾经也对库执行此操作,但现在默认的 Nix-style builds 停止了这种操作。

现在(实际上,以前也是如此),使用库的方式是依赖它,让 Cabal 在幕后找出是否需要安装。即,您将.cabal 文件添加到您的.hs 源文件中,其中包含build-depends: tidal。然后当你说cabal install .时,它会先下载并安装库,然后再使用它来构建你自己的可执行文件。


当然,从技术上讲,Stack 和 Cabal 都会安装库,只是它们没有全局注册它们。即,cabal 知道它在哪里安装了库,但你不应该真的知道这一点。它本着持续集成的精神:如果您的代码现在以您碰巧安装的库的特定状态构建,那不是很可靠。如果它仅使用项目文件中明确列出的那些库进行构建,那么将来您(或其他人)仍然能够在另一台计算机上使用您的代码而无需花费数小时弄清楚要安装哪些库的机会要好得多首先。

【讨论】:

  • 我新建一个目录并运行cabal init,在依赖项中添加tidal,然后运行cabal new-install .。它说LICENSE: openBinaryFile: does not exist (No such file or directory)
  • @Student 在cabal init 期间选择一个合适的许可证,它知道如何生成LICENSE 文件,或者自己添加一个。 (Cabal 不会关心文件 in 的内容,所以从技术上讲,一个空文件应该可以......但是,最好选择标准许可证。)
【解决方案2】:

cabal install --lib tidal 不会将库二进制文件安装在 ghc-pkg 管理的位置。二进制文件保留在阴谋集团“商店”中。

它的作用是创建一个纯文本GHC package environment file,由 ghcghci 的独立调用获取,并告诉他们在哪里寻找额外的库。

默认情况下 (as mentioned in the docs),此包环境文件将在 ~/.ghc/$ARCH-$OS-$GHCVER/environments/default 创建,并由在任何地方进行的 ghcghci 调用选取。

我们还可以提供一个额外的--package-env 参数来在本地文件夹中创建环境文件,这只会影响在该文件夹中进行的ghcghci 调用。例如:

cabal install --lib --package-env . tidal

cabal 项目本身忽略环境文件,因为它们的包环境是从 cabal 文件的 build-depends 部分构建的,以实现可重复性。但是环境文件对于不必首先创建 cabal 项目很有用,如果你只需要它来玩 ghci 中的库,或者如果你正在使用 ghc 编译简单的程序 仅限。

【讨论】:

    猜你喜欢
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多