【问题标题】:Failing to install Haskell uniplate library无法安装 Haskell 单板库
【发布时间】:2014-11-15 03:24:52
【问题描述】:

我正在尝试安装 Elm,说明是先安装 Haskell,然后

sh> cabal update
sh> cabal install cabal-install
sh> cabal install -j Elm elm-repl elm-reactor elm-get

当我这样做时,cabal-install 安装会安装 text-1.2.0.0,这与 uniplate 需要的 text-1.1.0.0 冲突,因此 uniplate 及其依赖项无法安装。 Text-1.1.0.0 已安装并存在,但被拒绝以支持 text-1.2.0.0,即使目标需要 text-1.1.0.0。

有没有办法坚持 cabal 使用 text-1.1.0.0? 有没有办法让 text-1.1.0.0 和 text-1.2.0.0 共存? 有没有办法说服 uniplate 它可以接受 text-1.2.0.0? 或者一种让单板(或阴谋集团)相信版本 text-1.1.0.0 实际安装的方法?那还能用吗?

当我明确尝试安装文本的 1.1.0.0 版本时,我被告知重新安装会破坏其他包。显然这是降级而不是共同安装。 cabal 似乎没有允许我同时安装同一个库的两个版本的选项。

如果我卸载 Haskell 和所有库,然后重新安装 Elm(没有安装 cabal-install,所以我没有安装 text-1.2.0.0,所以没有冲突),我会得到 100 行左右的

package aeson-0.7.0.4-8f84b14cc682e4c9b009352420076a45 is unusable due to missing or recursive dependencies:
  attoparsec-0.10.4.0-ec2d0a330db1f6e3a6a3b79471a403ef hashable-1.2.2.0-45bd22df8c4ead6b3a7fb1d08bb07f7d mtl-2.1.3.1-8bcc0591131896cfc8761a93703d4c61 scientific-0.2.0.2-5e275f5d96527da6dc1f05642692a484 syb-0.4.1-be94ebe67c3607f5df1dfcc1906f5d5c text-1.1.0.0-9bd69e9ace700e05fb08e463086bc383 unordered-containers-0.2.4.0-69836b34d13649bcfacc8fb0c9f53e64 vector-0.10.9.1-c550551354bc7c2b5a1d261f39b2f3f4
package aeson-pretty-0.7.1-5dc26d5a4560afe110e90283479a1251 is unusable due to missing or recursive dependencies:
aeson-0.7.0.4-8f84b14cc682e4c9b009352420076a45       
text-1.1.0.0-9bd69e9ace700e05fb08e463086bc383 
unordered-containers-0.2.4.0-69836b34d13649bcfacc8fb0c9f53e64 
vector-0.10.9.1-c550551354bc7c2b5a1d261f39b2f3f4
package asn1-encoding-0.9.0-94e9066cccf7ead73bee5ae4aa982071 is unusable due to missing or recursive dependencies:
mtl-2.1.3.1-8bcc0591131896cfc8761a93703d4c61
package asn1-parse-0.9.0-af4efc4777a8a0d9d19a626d5e4b08ff is unusable due to missing or recursive dependencies:
asn1-encoding-0.9.0-94e9066cccf7ead73bee5ae4aa982071
mtl-2.1.3.1-8bcc0591131896cfc8761a93703d4c61 
text-1.1.0.0-9bd69e9ace700e05fb08e463086bc383

我完全不知道如何解决这个问题,甚至不知道在哪里尝试。以前有没有人走过这条路,您有什么建议或指示吗?

谢谢。

编辑 在沙箱中安装只会逐渐改变结果:text-1.1.0.0 不会与 text-1.1.0.0 冲突,但仍然无法加载(尽管已安装)并且仍然是未满足的依赖项。

blaze-builder 是第一个以 cannot satisfy -package-id text-1.1.0.0-9bd69e9ace700e05fb08e463086bc383 失败的,但前面提到的同一日志 [_12] trying: text-1.1.0.0/installed-9bd... (dependency of Elm-0.13) 没有明显的错误或投诉。

cabal list 显示已安装的 text-1.1.0.0 和 text-1.2.0.0。

单独安装 blaze-builder 看起来是一样的。依赖解析展示

[_56] trying: blaze-builder-0.3.3.4 (user goal)
[_57] next goal: text (dependency of blaze-builder-0.3.3.4)
[_57] trying: text-1.1.0.0/installed-9bd...
[_58] done

一切看起来都不错,但后来,相同的日志有

<command line>: cannot satisfy -package-id text-1.1.0.0-9bd69e9ace700e05fb08e463086bc383
    (use -v for more information)

ghc 命令行已经有 -v 标志并尝试重新运行从日志中复制的命令行,以及更多 -vs,会出现“无法在以下位置找到包数据库”的错误 dist/dist-sandbox-ad0bcd57/package.conf.inplace"。

似乎没有 package.conf.inplace。

进一步编辑

Elm 安装页面上有一个指向BuildFromSource.hs 脚本的链接,该脚本也应该用于安装 Elm。在该脚本运行和失败的这段时间里,我设法安装了 leiningen、node、npm、grunt 和 Clojure。我现在在大约 20 分钟内安装 Clojurescript 的道路上比我在近一周内安装 Elm 更进一步。

榆树看起来真的很有趣,但玩起来太难了。

再次感谢所有尝试提供帮助的人。

* 编辑 *

我终于明白了。

安装程序在http://elm-lang.org/Install.elm 安装的每个可执行文件都会导致段错误。

同一页面上的“从源代码构建”选项不起作用,因为依赖关系要么相互重叠,要么一开始就无法直接进行。

http://new-www.haskell.org/downloads/osx 的 ghc 需要比我更高版本的 Mac OS。 (旧版本的链接不会误入歧途。)

解决方案(回想起来很明显)是port install haskell-platformport install hs-cabal-installcabal install Elm ...。我确实必须运行其中一个安装程序两次,因为它找不到 hackage.haskell.org(这是一个“用户”错误吗?),但我的 hello-world.elm 现在可以编译了。

再次感谢大家。

【问题讨论】:

  • 这看起来就像另一个可怕的钻石依赖。您是否尝试过在沙盒中安装东西?
  • 尝试删除您的.cabal 目录并从头开始重新安装您需要的依赖项,一气呵成。例如,cabal install Cabal uniplate aeson text vector mtl Elm elm-repl elm-reactor elm-get。看看这是否能让你有所收获。
  • 一次安装所有包会改变(但不能解决)依赖关系。一长串依赖关系及其关系得出的结论是,某些包(无序容器、aeson、科学和不区分大小写)将被重新安装“破坏”。
  • 你在使用haskell-platform吗?如果有是哪个版本?什么操作系统?
  • 我在 Mac 10.6.8 上使用 Haskel Platform 2014.2.0.0。安装的ghc版本是7.8.3。

标签: haskell cabal cabal-install elm


【解决方案1】:

您已安装的元素似乎存在一些依赖性问题。您可能需要将其安装在沙盒中。

首先,更新到最新版本的cabal:

$ cabal update
$ cabal install cabal cabal-install

接下来,确保您的$PATH 上安装了cabal 版本。

$ which cabal
> /path/to/cabal/bin/cabal

如果它显示类似/usr/bin/cabal 的内容,您将需要在$PATH 上使用export cabal。对我来说这是`/home/username/.cabal/bin

$ export PATH=/path/to/cabal/bin/cabal;$PATH

再次运行 which cabal 并确保它指向该路径。

现在您拥有最新版本的cabal。运行以下命令:

$ mkdir elm
$ cd elm
$ cabal sandbox init

这将初始化一个沙箱,其中的依赖项完全独立于您的其他安装。在此目录中,您应该能够通过运行以下命令安装 elm 平台:

$ cabal install Elm elm-repl elm-reactor elm-get

这些将安装在一个名为 .cabal-sanbox/bin/ 的子目录中,为方便起见,您可能希望将其添加到您的 $PATH,以便您可以从任何目录运行可执行文件。

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多