使用stack new testProject
创建新项目后,我已编辑testProject.cabal
以使用最新版本的Cabal:
cabal-version: 2.2.0.0
之后运行stack setup --upgrade-cabal
会产生错误:
[ 12 of 216] Compiling Distribution.Compat.Parsing ( Distribution/Compat/Parsing.hs, Distribution/Compat/Parsing.o )
Distribution/Compat/Parsing.hs:61:1: error:
Could not find module ‘Text.Parsec’
Use -v to see a list of the files searched for.
|
61 | import qualified Text.Parsec as Parsec
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Exit code ExitFailure 1 while running ["ghc","Setup.hs"] in /tmp/stack-cabal-upgrade30389/Cabal-2.2.0.0/
我在Arch Linux 4.15.3上,stack --version
给出了
Version 1.6.3, Git revision b27e629b8c4ce369e3b8273f04db193b060000db (5454 commits) x86_64 hpack-0.20.0
stack ghc -- --version
:
The Glorious Glasgow Haskell Compilation System, version 8.2.2
如何解决此错误并使用Stack升级Cabal?
答案 0 :(得分:3)
您描述的问题是因为:
Cabal 2.2.0.0与早期版本不同,它将 parsec 作为依赖项。为此,parsec is one of the core packages bundled with GHC from GHC 8.4.1 onwards。
stack setup --upgrade-cabal
在" global"安装 Cabal level,这是交叉快照但与GHC版本相关联。因此,它只使用与GHC捆绑在一起的软件包(而不是任何快照中的软件包)。请参阅Stack issue #3049以及其中相关的其他问题,以便对此进行讨论。
既然如此,我认为除非您愿意将项目更改为使用GHC 8.4.1的解析器/快照,否则无法解决此问题。
P.S。:除非您需要2.2.0.0中包含的特定 Cabal 功能或错误修复,否则您可能需要重新考虑是否确实要升级 Cabal 。引用Stack user guide:
stack setup --upgrade-cabal
可以安装较新版本的Cabal库,用于执行实际构建。您通常不应该这样做,因为新的Cabal版本可能会导致与软件包集不兼容,但如果您尝试测试特定的错误修复程序,它会很有用。