首页 > 解决方案 > cabal:遇到缺少的依赖项:

问题描述

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

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 克隆的本地副本。阴谋集团的文档并没有说太多。

有用的信息:

$ 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)

标签: haskellelmcabal

解决方案


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

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


推荐阅读