haskell - 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)
解决方案
你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
当您对更改感到满意并希望使可执行文件更广泛地可用时。
推荐阅读
- c# - C#从文本框vscode获取文本
- php - 通过 SFTP 迁移后,Wordpress 无法正常工作
- javascript - 为什么在第一次组件渲染中未定义 useState 对象值?
- javascript - 声明全局变量时出现意外令牌错误?
- algorithm - 大 O 表示法:内部具有 O(1) 操作的 For 循环
- android - 升级 react native 项目后使用 Kotlin @react-native-community/async-storage 仍然继续搜索 MainApplication.java 文件
- reactjs - 静态 css 文件的相对路径不会在新选项卡上加载
- javascript - Bootstrap 5单击时更改折叠按钮上的文本
- javascript - 为什么我在尝试加载本地字体时收到 chrome-extension://invalid/ 错误
- vim - 用相同长度的空格替换一个单词(或多个单词)?