gpt4 book ai didi

haskell - 解决 Travis-CI 上的 cabal 依赖性时出错

转载 作者:行者123 更新时间:2023-12-03 22:08:54 25 4
gpt4 key购买 nike

我正在尝试使用 Travis-CI 构建我的 Hakyll 网站。然而,在我做到这一点之前,我在尝试将 Hakyll 安装为依赖项时遇到了依赖项错误。

我可以在我的机器上本地构建 Hakyll,没有任何问题。可能导致依赖错误的原因是什么?如何解决?有没有一种方法可以解决这个问题,而无需实际对每个依赖项版本进行硬编码?

这是来自 TravisCI 的输出。

travis_fold:end:git.5
$ export PATH=/usr/local/ghc/$(ghc_find 7.6)/bin/:$PATH
travis_fold:start:cabal
$ cabal update
Config file path source is default config file.
Config file /home/travis/.cabal/config not found.
Writing default configuration to /home/travis/.cabal/config
Downloading the latest package list from hackage.haskell.org
Note: there is a new version of cabal-install available.
To upgrade, run: cabal install cabal-install
travis_fold:end:cabal
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.6.3
$ cabal --version
cabal-install version 1.18.0.2
using version 1.18.1 of the Cabal library
travis_fold:start:before_install.1
$ cabal update
Downloading the latest package list from hackage.haskell.org
Note: there is a new version of cabal-install available.
To upgrade, run: cabal install cabal-install
travis_fold:end:before_install.1
travis_fold:start:before_install.2
$ cabal install hakyll pandoc
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: hakyll-4.5.3.0 (user goal)
trying: base-4.6.0.1/installed-8aa... (dependency of hakyll-4.5.3.0)
trying: hakyll-4.5.3.0:+checkexternal
trying: http-conduit-2.1.2.3 (dependency of hakyll-4.5.3.0:+checkexternal)
trying: http-client-0.3.3.2 (dependency of http-conduit-2.1.2.3)
trying: exceptions-0.6.1 (dependency of http-client-0.3.3.2)
trying: transformers-0.4.1.0 (dependency of http-conduit-2.1.2.3)
next goal: mtl (dependency of hakyll-4.5.3.0)
rejecting: mtl-2.2.1, 2.2.0.1, 2.2 (conflict: hakyll => mtl>=1 && <2.2)
rejecting: mtl-2.1.3.1, 2.1.2 (conflict: transformers==0.4.1.0, mtl =>
transformers==0.3.*)
rejecting: mtl-2.1.1, 2.1 (conflict: base==4.6.0.1/installed-8aa..., mtl =>
base<4.6)
rejecting: mtl-2.0.1.1 (conflict: transformers==0.4.1.0, mtl =>
transformers==0.2.*)
rejecting: mtl-2.0.1.0, 2.0.0.0 (conflict: base==4.6.0.1/installed-8aa..., mtl
=> base<4.6)
rejecting: mtl-1.1.1.1, 1.1.1.0, 1.1.0.2, 1.1.0.1, 1.1.0.0, 1.0 (conflict:
exceptions => mtl>=2.0 && <2.3)
Backjump limit reached (change with --max-backjumps).

[31;1mThe command "cabal install hakyll pandoc" failed and exited with 1 during .[0m

Your build has been stopped.

如果有任何其他有用的输出,请告诉我,我可以提供。

最佳答案

如果您得到Backjump limit reached,则要尝试的第一件事来自 cabal-install 的方法是使用选项 --max-backjumps=-1 重试这意味着“彻底搜索”,但如果最终花费了数十分钟,您就需要中断它或依赖 Travis-CI 超时。对于大型但有限的搜索,您还可以使用 500 或 1000 而不是 -1 - 默认值为 200。

如果这不起作用,则尝试使用选项 --constraint 'foo==0.1.0.0 挑选特定项目以限制为特定版本。 ,最好是您实际上知道应该可以使用相同 GHC 版本安装的一个。

在这种特殊情况下,以下两行表明 hakyll问题本身就是问题的根源:

rejecting: mtl-2.2.1, 2.2.0.1, 2.2 (conflict: hakyll => mtl>=1 && <2.2)
rejecting: mtl-2.1.1, 2.1 (conflict: base==4.6.0.1/installed..., mtl => base<4.6)

换句话说,base与 GHC 版本相关,似乎需要 mtl>=2.2 (或者可能小于2.1,但我怀疑这也行不通)。 hakyll需要 mtl<2.2 ,因此似乎存在根本性冲突,暗示此版本的 hakyll此版本的 base 不起作用.

关于haskell - 解决 Travis-CI 上的 cabal 依赖性时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24540994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com