Windows Haskell安装Euterpea时发布';HCodecs没有跳过安装的更高版本的版本检查

Windows Haskell安装Euterpea时发布';HCodecs没有跳过安装的更高版本的版本检查,windows,haskell,cabal,cabal-install,euterpea,Windows,Haskell,Cabal,Cabal Install,Euterpea,当我今天安装Euterpea时,我发现HCodecs-0.5.1(Euterpea的依赖项)总是会失败 所以我去Hackage.Haskell.org,检查HCodecs是否提供了最新版本:HCodecs-0.5.2,我通过cabal v1安装成功安装了它(严格遵循Euterpea.com和Haskell.org的说明) 然而,在我安装了HCodecs-0.5.2之后,Euterpea的安装仍然未能安装HCodecs-0.5.1;对于依赖项检查,哪个id非常奇怪,没有跳过旧版本包,以获得本地可用

当我今天安装Euterpea时,我发现HCodecs-0.5.1(Euterpea的依赖项)总是会失败

所以我去Hackage.Haskell.org,检查HCodecs是否提供了最新版本:HCodecs-0.5.2,我通过cabal v1安装成功安装了它(严格遵循Euterpea.com和Haskell.org的说明)

然而,在我安装了HCodecs-0.5.2之后,Euterpea的安装仍然未能安装HCodecs-0.5.1;对于依赖项检查,哪个id非常奇怪,没有跳过旧版本包,以获得本地可用的新版本包

这是2的安装日志,希望任何人都能帮助我绕过版本检查,或者解决HCodecs-0.5.1的构建失败:

===================安装HCodecs-0.5.2==========================


PS C:\WINDOWS\system32> cabal v1-install HCodecs-0.5.2
Resolving dependencies...
Downloading  fail-4.9.0.0
Downloaded   fail-4.9.0.0
Starting     fail-4.9.0.0
Building     fail-4.9.0.0
Completed    fail-4.9.0.0
Downloading  HCodecs-0.5.2
Downloaded   HCodecs-0.5.2
Starting     HCodecs-0.5.2
Building     HCodecs-0.5.2
Completed    HCodecs-0.5.2
===继续安装Euterpea,HCodecs-0.5.1没有跳过并再次失败====

PS C:\WINDOWS\system32> cabal v1-install Euterpea
Resolving dependencies...
Starting     HCodecs-0.5.1
Building     HCodecs-0.5.1
Failed to install HCodecs-0.5.1
Build log ( C:\Users\12798\AppData\Roaming\cabal\logs\ghc-8.10.2\HCodecs-0.5.1-KovArVTnpFnLaEvHYYD8GP.log ):
Preprocessing library for HCodecs-0.5.1..
Building library for HCodecs-0.5.1..
[1 of 7] Compiling Codec.ByteString.Builder ( src\Codec\ByteString\Builder.hs, 
dist\build\Codec\ByteString\Builder.o )
src\Codec\ByteString\Builder.hs:79:1: warning: [-Wunused-imports]
    The import of `Data.Semigroup' is redundant
      except perhaps to import instances from `Data.Semigroup'
    To import instances alone, use: import Data.Semigroup()
   |
79 | import Data.Semigroup
   | ^^^^^^^^^^^^^^^^^^^^^
[2 of 7] Compiling Codec.ByteString.Parser ( src\Codec\ByteString\Parser.hs, dist\build\Codec\ByteString\Parser.o )
src\Codec\ByteString\Parser.hs:143:5: error:
    `fail' is not a (visible) method of class `Monad'
    |
143 |     fail  err  = Parser $ \(S _ _ bytes) ->
    |     ^^^^
cabal: Leaving directory 'C:\Users\12798\AppData\Local\Temp\cabal-tmp-13328\HCodecs-0.5.1'
cabal.exe: Error: some packages failed to install:
Euterpea-2.0.7-16Dwojok2ejBacdiDIytTu depends on Euterpea-2.0.7 which failed
to install.
HCodecs-0.5.1-KovArVTnpFnLaEvHYYD8GP failed during the building phase. The
exception was:
ExitFailure 1

这就是我在dependency版本上发布的全部日志问题。问题是Euterpea完全依赖于HCodecs的0.5.1版本,而对MonadFail提案的支持(从GHC 8.8.1开始全面实施)仅添加到HCodecs的0.5.2版本中。在Euterpea更新其依赖项列表之前,您有两个选择来解决此问题:要么将
--allow newer
命令行标志传递给cabal,这将导致它忽略版本上限,要么将GHC降级到8.6.5,这是未完全实现MonadFail建议的最终版本。在这种情况下,我推荐前者。

谢谢你的建议,但是我可以在哪里应用--allow newercommand?@KaijCH
cabal v1安装--allow newer Euterpea
:谢谢,它确实解决了我的问题,Euterpea安装为“已完成”,但是日志只显示了Euterpea的安装本身,这是否意味着所有其他依赖项都已安装?:是的,所有软件包在重新启动后运行良好,感谢您的解决方案我想在Euterpea的依赖项修改其Euterpea.cabal文件之前,您的“`--allow newer``解决方案是从cabalGCH 8.10.3和cabal 3.2.0.0安装的唯一优雅方式,根据2021年1月,以上解决方案对我有效,特此确认。