【问题标题】:cabal: Encountered missing dependencies:cabal:遇到缺少的依赖项:
【发布时间】:2021-08-28 18:00:14
【问题描述】:

我正在尝试从 Github 存储库安装一个 Haskell 程序(它本身是一个 compiler 用于另一种编程语言)。

Elm 编译器本身就是一个 Haskell 程序,我想从源代码编译它:

$ cabal configure
Resolving dependencies...
Warning: solver failed to find a solution:
Could not resolve dependencies:
trying: elm-0.19.1 (user goal)
next goal: zip-archive (dependency of elm-0.19.1)
Dependency tree exhaustively searched.
Trying configure anyway.
Configuring elm-0.19.1...
cabal: Encountered missing dependencies:
SHA -any,
ansi-terminal ==0.8.*,
ansi-wl-pprint >=0.6.8 && <0.7,
containers >=0.5.8.2 && <0.6,

如果我尝试使用不同的命令,计算机会搜索不同版本的 Elm 编程语言。

$ cabal install elm
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: Elm-0.13 (user goal)
trying: base-4.12.0.0/installed-4.1... (dependency of Elm-0.13)
next goal: transformers (dependency of Elm-0.13)
rejecting: transformers-0.5.6.2/installed-0.5..., transformers-0.6.0.2,
transformers-0.5.6.2, transformers-0.5.5.2, transformers-0.5.5.0,
transformers-0.5.4.0, transformers-0.5.2.0, transformers-0.5.1.0,
transformers-0.5.0.1, transformers-0.5.0.0 (conflict: Elm => transformers>=0.2
&& <0.5)
rejecting: transformers-0.4.3.0, transformers-0.4.2.0 (conflict:

我已经全局安装了 Elm,我想安装一个从 Github 克隆的本地副本。阴谋集团documentation 不多说了。

有用的信息:

$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 8.6.5
$ cabal --version
cabal-install version 1.24.0.2
compiled using version 1.24.2.0 of the Cabal library 

尝试不同的事情可能会有风险:

$ cabal install --only-dependencies
Resolving dependencies...
internal error: could not construct a valid install plan.
The proposed (invalid) plan contained the following problems:
Package time is required by several packages, but they require inconsistent
versions:
package zip-archive-0.3.3 requires time-1.10
package snap-server-1.1.2.0 requires time-1.10
package snap-core-1.0.4.2 requires time-1.10
package io-streams-1.5.2.1 requires time-1.10
package http-client-0.6.4.1 requires time-1.10
package elm-0.19.1 requires time-1.10
package directory-1.3.6.2 requires time-1.10
package cookie-0.4.5 requires time-1.10
package HTTP-4000.3.16 requires time-1.10
package unix-2.7.2.2 requires time-1.8.0.2

Proposed plan:
Configured HTTP-4000.3.16 (.fake.HTTP-4000.3.16)
Configured SHA-1.6.4.4 (.fake.SHA-1.6.4.4)
Configured ansi-terminal-0.8.2 (.fake.ansi-terminal-0.8.2)
Configured ansi-wl-pprint-0.6.8.2 (.fake.ansi-wl-pprint-0.6.8.2)
Configured asn1-encoding-0.9.6 (.fake.asn1-encoding-0.9.6)
Configured asn1-parse-0.9.5 (.fake.asn1-parse-0.9.5)
Configured asn1-types-0.3.4 (.fake.asn1-types-0.3.4)

【问题讨论】:

    标签: haskell elm cabal


    【解决方案1】:

    您的cabal 很旧,我强烈建议您升级。

    也就是说……使用 cabal-1,调用很简单

    cabal install
    

    最后没有elm。从您从 github 克隆的目录中运行它,该目录有一个名为 elm.cabal 或类似文件的文件——它会自动查找扩展名为 .cabal 的文件并安装里面描述的包。 cabal install 还将负责安装缺少的依赖项。

    使用现代cabal,并假设.cabal 文件中命名的可执行文件名为elm,我会使用

    cabal run elm -- --args --for --elm --compiler
    

    在测试期间运行编译器,然后

    cabal install --exe
    

    当您对所做的更改感到满意并希望使可执行文件更广泛地可用时。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    • 2017-12-25
    • 2015-04-18
    • 2020-03-24
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多