【问题标题】:No available version of ghc-prim -any with GHC 7.2.2GHC 7.2.2 没有可用的 ghc-prim -any 版本
【发布时间】:2012-01-04 17:08:14
【问题描述】:

我在archlinux上的$HOME中安装了ghc-7.2.2 unknown linux tar.bz2。

在使用 cabal-dev 成功安装多个软件包后,尝试安装例如。我得到的 parsec-numbers、文本、广告等:

cabal: cannot configure base-4.4.1.0 It requires ghc-prim -any
integer-simple and rts -any
There is no available version (of each of the above for example)

这是我的安装中的明显错误还是可能的错误?

我设置了适当的$GHC_PACKAGES_PATH 并运行了 ghc-pkg recache。

这是我的已安装软件包列表:

/home/jim/cabal-dev/packages-7.2.2.conf:
    QuickCheck-2.4.2
    bmp-1.1.2.1
    comonad-1.1.1.1
    comonad-transformers-2.0.2
    comonads-fd-2.0.2
    contravariant-0.1.3
    data-lens-2.0.2
    data-reify-0.6
    distributive-0.2.0.1
    free-2.0.2
    mtl-2.0.1.0
    primitive-0.4.0.1
    random-1.0.1.1
    repa-2.2.0.1
    repa-algorithms-2.2.0.1
    repa-bytestring-2.2.0.1
    repa-io-2.2.0.1
    semigroupoids-1.2.6
    semigroups-0.8
    transformers-0.2.2.0
    vector-0.9.1

/home/jim/lib/ghc-7.2.2/package.conf.d:
    Cabal-1.12.0
    array-0.3.0.3
    base-4.4.1.0
    bin-package-db-0.0.0.0
    (binary-0.5.0.2)
    bytestring-0.9.2.0
    containers-0.4.1.0
    directory-1.1.0.1
    extensible-exceptions-0.1.1.3
    ffi-1.0
    filepath-1.2.0.1
    (ghc-7.2.2)
    ghc-prim-0.2.0.0
    (haskell2010-1.1.0.0)
    (haskell98-2.0.0.0)
    hoopl-3.8.7.1
    hpc-0.5.1.0
    integer-gmp-0.3.0.0
    old-locale-1.0.0.3
    old-time-1.0.0.7
    pretty-1.1.0.0
    process-1.1.0.0
    rts-1.0
    template-haskell-2.6.0.0
    time-1.2.0.5
    unix-2.5.0.0

是的,bytestring-0.9.0.2 应该是 -0.9.2.0,抱歉。

cabal-dev -v3 install bytestring --reinstall produces:

cabal-dev 0.9
built with Cabal 1.12.0
searching for cabal in path.
found cabal at /usr/bin/cabal
("/usr/bin/cabal",["--numeric-version"])
/usr/bin/cabal is version 0.10.2
Using cabal-install 0.10.2 at FoundOnSystem {locationPath = "/usr/bin/cabal"}
No sandbox specified. Using cabal-dev
Using cabal-dev as the relative cabal-dev sandbox
Using /home/jim/cabal-dev as the cabal-dev sandbox
Creating local repo /home/jim/cabal-dev/packages
searching for ghc-pkg in path.
found ghc-pkg at /home/jim/bin/ghc-pkg
("/home/jim/bin/ghc-pkg",["--version"])
/home/jim/bin/ghc-pkg is version 7.2.2
Using ghc-pkg 7.2.2
("/usr/bin/cabal",["--version"])
Complete arguments to cabal-install:
["--config-file=/home/jim/cabal-dev/cabal.config","install","--verbose=3","--reinstall"]
("/usr/bin/cabal",["--config-file=/home/jim/cabal-dev/cabal.config","install","--verbose=3","--reinstall","bytestring"])
searching for ghc in path.
found ghc at /home/jim/bin/ghc
("/home/jim/bin/ghc",["--numeric-version"])
/home/jim/bin/ghc is version 7.2.2
looking for tool "ghc-pkg" near compiler in /home/jim/bin
found ghc-pkg in /home/jim/bin/ghc-pkg
("/home/jim/bin/ghc-pkg",["--version"])
/home/jim/bin/ghc-pkg is version 7.2.2
("/home/jim/bin/ghc",["--supported-languages"])
("/home/jim/bin/ghc",["--info"])
Reading installed packages...
("/home/jim/bin/ghc-pkg",["dump","--global","-v2"])
("/home/jim/bin/ghc-pkg",["dump","--package-conf=/home/jim/cabal-dev/packages-7.2.2.conf","-v2"])
("/home/jim/bin/ghc",["--print-libdir"])
Reading available packages...
Resolving dependencies...
selecting
/usr/bin/cabal returned ExitFailure 1

哈哈。尝试使用 &2>file 捕获输出时遗漏了“cabal:无法配置 bytestring-0.9.2.0。它需要 ghc-prim -any...(与以前相同)”

【问题讨论】:

  • 不要为此使用 cabal-dev,直接运行 cabal 以使其输出可捕获。但不要忘记 --dry-run。
  • 哦,实际上比它不重新安装 bytestring 更有趣的是它认为应该重新安装的原因。出现这些错误时,您尝试安装哪个软件包? $ cabal install -v3 --dry-run that-package 会很好。
  • cabal install -v3 --dry-run bytestring => cabal:无法配置 bytestring-0.9.2.0。它需要 ghc-prim -any。没有可用的版本。 IPkg 广告依赖于整数简单 [
  • cabal-install -v3 --dry-run ad => "cabal: 无法配置 base-4.4.1.0。它需要 ghc-prim -any、integer-simple -any 和 rts -any。没有可用的版本..”
  • 我尝试用 integer-simple 但是构建 ghc-7.2.2 src(使用我安装的 ghc-7.2.2 二进制文件)。 ./configure 覆盖 config.mk 编辑。我现在发现我也无法使用 integer-gmp 安装 ghc-7.2.2 src。

标签: haskell ghc


【解决方案1】:

那条消息,

cabal:无法配置 base-4.4.1.0

意味着 cabal 正在尝试重新安装 base,或者更确切地说,幸运的是它并没有真正尝试这样做(这是不可能的,base 与编译器的交织过于紧密,您绝对不能重新安装它)。但是您正在尝试安装需要重新安装基础的东西。

问题是您尝试安装的一个(或多个)软件包依赖于integer-simplebase 取决于 integer-gmpinteger-simple。这两个包都提供了Integer 类型的实现和一些涉及它的基本操作,因此您只能拥有这两个中的一个。默认值为integer-gmp,因为它是具有卓越性能的那个,并且是您安装的那个(并且所有[?] 预构建的二进制文件都是用它构建的)。

如果您真的需要依赖于integer-simple 的软件包,您必须自己从源代码构建 GHC(我建议在构建后保留带有 integer-gmp 的软件包,不过,您必须将它们保存在不同的位置, 如果它们是相同的 GHC 版本,例如 ~/bin (和 ~/lib) 中的正常, ~/simple/$dir 中的另一个)。

从源代码构建它并不难,但确实需要一段时间。程序是

  1. 下载源码包并解压
  2. 在编辑器中打开 mk/config.mk.in,将 INTEGER_LIBRARY 更改为 integer-simple 并保存
  3. $ cd ghc-7.2.2
  4. $ ./configure --prefix=$HOME/whereever/you/want/it
  5. $ 制作 && 制作安装

【讨论】:

  • 不幸的是 cabal-dev install llvm 返回:“cabal: cannot configure bytestring-0.9.0.2. It requires ghc-prim -any”但是这些都安装了没有可用的版本..”..我收到此消息,其中包含仅依赖于 base 的 text、hledger 和其他包。
  • 1.那是香草二进制还是新构建的整数简单? 2. 错误信息没有帮助,cabal 的一个常见问题,以更高的详细程度运行它以获得更多信息,特别是为什么它要安装这么古老的字节串版本,除非你打错了版本,在这种情况下,为什么要重新安装它?运行$ ghc-pkg check 以查找损坏的包。
  • 香草二进制文件。使用 cabal-dev install -v3 bytestring --reinstall 尝试字节串会产生:“cabal:无法配置字节串。”并且没有可用的 ghc-prim 等。正如您所说,即使使用 -v3,cabal 也不会提供更多信息。我刚刚完成了 ghc 重新安装。 Tnx v. 非常感谢您的帮助。
  • cabal 本身应该通过-v3 告诉您很多信息,它选择了哪些软件包版本以及它丢弃了哪些版本。为了不搞砸任何事情,请先试运行:$ cabal install --reinstall -v3 --dry-run bytestring.
  • 已在 OP 中添加信息。
猜你喜欢
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多