首页 文章

删除Stack / Cabal包并安装旧版本

提问于
浏览
2

我最近在我的cabal文件中添加了一些新的build-deps但是现在当我运行 stack build 时,我收到以下错误:

--  While attempting to add dependency,
    Could not find package api-builder in known packages

--  Failure when adding dependencies:
      api-builder: needed (==0.11.0.0), not present in build plan (latest applicable is 0.11.0.0)
      http-client: needed (==0.4.20), 0.4.27 found (latest applicable is 0.4.20)
      http-types: needed (==0.8.6), 0.9 found (latest applicable is 0.8.6)
    needed for package: music-haskell-0.1.0.0

Recommended action: try adding the following to your extra-deps in /Users/.../src/music-haskell/stack.yaml
- api-builder-0.11.0.0

You may also want to try the 'stack solver' command

当我运行 stack solver 时,我收到有关http-types包的错误

cabal: Could not resolve dependencies:
trying: music-haskell-0.1.0.0 (user goal)
next goal: http-types (dependency of music-haskell-0.1.0.0)
rejecting: http-types-0.9 (conflict: music-haskell => http-types==0.8.6)
rejecting: http-types-0.8.6, 0.8.5, 0.8.4, 0.8.3, 0.8.2................
(global constraint requires ==0.9)
Dependency tree exhaustively searched.

根据我的理解,看起来我已经安装了 http-types-0.9 但现在我需要 http-types-0.8.6 . 我最初尝试使用 $stack install http-types 手动安装它,但是我收到以下错误:

Error parsing targets: Specified target version 0.8.6 for package http-types does not match snapshot version 0.9

当我看到我是否可以做 $ stack uninstall 但看起来它已被弃用了 .

如何摆脱 http-type 的快照/全局目标?

1 回答

  • 3

    您可以通过extra-deps覆盖stack.yaml文件中的特定快照包,例如:

    extra-deps:
    - http-types-0.8.6
    

    一旦开始包含具有与您正在使用的快照相冲突的版本边界的软件包,您最终可能会很快遇到这些问题 . 我推荐的解决方案是:

    • 请求包维护者将他们的包装到Stackage中,这样你就不必手动操作它们

    • 尽可能坚持使用Stackage中的软件包

    即使您不是作者,也可以自己向Stackage添加包 . 有关说明,请参阅the maintainer guide .

相关问题