【问题标题】:How to install erd with cabal install without Could not resolve dependencies error?如何在没有无法解决依赖关系错误的情况下使用 cabal install 安装 erd?
【发布时间】:2019-01-29 20:37:40
【问题描述】:

我正在尝试安装 erd,以便可以使用 erdgraphviz 生成一些数据库表实体关系图。

我一直在 Windows 64 PC 上的 Git-Bash 命令行提示符下进行以下所有安装。

首先我从enter link description here 安装了 Haskell(包括 cabal),然后我做了一个

cabal update

在使用这些结果尝试实际安装 erd 之前

$ cabal install erd
Resolving dependencies...
cabal.exe: Could not resolve dependencies:
trying: erd-0.1.3.0 (user goal)
next goal: base (dependency of erd-0.1.3.0)
rejecting: base-4.8.2.0/installed-140... (conflict: erd => base==4.7.*)
rejecting: base-4.8.2.0, 4.8.1.0, 4.8.0.0, 4.7.0.2, 4.7.0.1, 4.7.0.0, 4.6.0.1,
4.6.0.0, 4.5.1.0, 4.5.0.0, 4.4.1.0, 4.4.0.0, 4.3.1.0, 4.3.0.0, 4.2.0.2,
4.2.0.1, 4.2.0.0, 4.1.0.0, 4.0.0.0, 3.0.3.2, 3.0.3.1 (global constraint
requires installed instance)
Dependency tree exhaustively searched.

我看到重置有时会有所帮助

rm -rf ~/.ghc ~/.cabal

但在我的情况下,它并没有改变结果,我仍然看到“无法解决依赖关系”

【问题讨论】:

  • 你用的是什么版本的ghc/cabal——你要安装什么版本的erd,同时显示ghc-pkg list的输出
  • 我强烈建议您使用 stackcabal sandboxes 这会使此类事情不会消失,而是会很多更容易发生
  • @epsilonhalbe:我正在使用 cabal 版本:'cabal-install version 1.22.6.0 using version 1.22.5.0 of the Cabal library'。我是 Hacksell 和 Cabal 的新手,我不确定 stacksandboxes 是什么。

标签: haskell erd cabal-install


【解决方案1】:

由于erd 是一个可执行文件,我将使用stack 安装它:

stack 的安装说明可在此处找到:

https://github.com/commercialhaskell/stack/blob/master/doc/install_and_upgrade.md

在shell中运行这些命令:

cabal get erd-0.1.3.0
cd erd-0.1.3.0
stack init --resolver lts-2.22
stack build

最后一条命令报告如下:

Installing executable(s) in
{some directory}/erd-0.1.3.0/.stack-work/install/x86_64-osx/lts-2.17/7.8.4/bin

我们使用的是 lts-2.22,因为 erd-1.3.0 需要 base-4.7。

【讨论】:

  • 仅供参考,stack unpack 将下载并解压 tarball
  • 在执行过程中等待了大约 10 分钟,结果出现错误:Unable to start C:\Users\ME\AppData\Local\Programs\stack\x86_64-windows\ghc-7.8.4\mingw\bin/realgcc.exe (error code: 2)
【解决方案2】:

这很可能是因为erd 是一个非常旧的包,并且在包描述中它说

Properties
Version  0.1.3.0
Change log  None available
Dependencies    base (==4.7.*)
              , bytestring (==0.10.*)
              , containers (==0.5.*)
              , graphviz (==2999.*)
              , parsec (==3.1.*)
              , text (==1.*) [details]

如果您使用最新的编译器 ghc-7.10 甚至 ghc-8.0 - 当前版本的 base 已与它打包在一起 - 今天 (2016-05-02) base-4.8 与您的不兼容项目。

所以最好切换到较旧的编译器版本 (ghc-7.8) 或尝试使用 cabal get erd 下载软件包并将 cabal 文件调整为 base == 4.8.* 并尝试一下。

【讨论】:

  • 我做了一个cabal get erd 并更新了一些文件。我不确定在哪里将 cabal 文件调整为 base == 4.8.*。我确实找到了一个 erd.cabal 文件,但我没有在任何地方看到 base ==。调整 erd.cabal 文件后,我需要做什么?
  • 那你看起来不够好 - 'build-depends' 下从底部算起的第 6 行
【解决方案3】:

这对我有用cabal install --allow-newer base erd

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多