如何修复hdevtools-“ GHC_PACKAGE_PATH不兼容。”错误

时间:2019-12-01 10:51:26

标签: haskell hdevtools

我是一位Haskell初学者,我将代码的出现用作学习示例。 在今年设置时,我重新安装了stack(在一台新计算机上,但是复制了大多数dotfiles),并且从上一年的笔记开始,并且无法使hdevtools重新工作。

我已经用stack new advent2019建立了一个新项目。如果“空”项目上的stack build很重要,它似乎需要几分钟的时间-似乎比去年更长。我用stack build hdevtools安装了hdevtools。

运行stack exec hdevtools -- check src/Lib.hs时出现以下错误:

Cabal error: hdevtools: Use of GHC's environment variable GHC_PACKAGE_PATH is incompatible
with Cabal. Use the flag --package-db to specify a package database (it can be
used multiple times).

到目前为止,我已经尝试过:

  • 我检查了外壳程序,并在主目录上进行了rg --no-ignore确认GHC_PACKAGE_PATH不是我设置的。也在项目目录上。
  • 我无法弄清楚如何使用所提到的--package-db标志-将其放置在hdevtools之后,将出现unknown flag错误,将其放置到堆栈中,则会得到invalid option。 / li>
  • stack exec --no-ghc-package-path hdevtools -- check src/Lib.hs-提到的here
  • 我删除了所有可能的相关文件:~/.local/bin/hdevtools~/.stack中的所有内容,全部~/.ghc*

没有人帮助解决这个错误。

我想我忽略了一些显而易见的事情-但是您能帮我指出吗?

出于完整性考虑:

  • 在OS X 10.15.1上
  • stack --versionVersion 1.9.3, Git revision 40cf7b37526b86d1676da82167ea8758a854953b (6211 commits) x86_64 hpack-0.31.1
  • stack ghc -- --versionThe Glorious Glasgow Haskell Compilation System, version 8.6.5
  • stack path
stack-root: /Users/me/.stack
project-root: /Users/me/Code/advent2019
config-location: /Users/me/Code/advent2019/stack.yaml
bin-path: /Users/me/.stack/snapshots/x86_64-osx/lts-14.16/8.6.5/bin:/Users/me/.stack/compiler-tools/x86_64-osx/ghc-8.6.5/bin:/Users/me/.stack/programs/x86_64-osx/ghc-8.6.5/bin:/usr/local/texlive/2018basic/bin/x86_64-darwin:/Users/me/.local/bin/:/Users/me/.gem/bin:/Users/me/.yarn/bin:/Users/me/Library/Python/3.7/bin/:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Library/TeX/texbin:.:/Applications/Wireshark.app/Contents/MacOS
programs: /Users/me/.stack/programs/x86_64-osx
compiler-exe: /Users/me/.stack/programs/x86_64-osx/ghc-8.6.5/bin/ghc
compiler-bin: /Users/me/.stack/programs/x86_64-osx/ghc-8.6.5/bin
compiler-tools-bin: /Users/me/.stack/compiler-tools/x86_64-osx/ghc-8.6.5/bin
local-bin: /Users/me/.local/bin
extra-include-dirs: 
extra-library-dirs: 
snapshot-pkg-db: /Users/me/.stack/snapshots/x86_64-osx/lts-14.16/8.6.5/pkgdb
local-pkg-db: /Users/me/Code/advent2019/.stack-work/install/x86_64-osx/lts-14.16/8.6.5/pkgdb
global-pkg-db: /Users/me/.stack/programs/x86_64-osx/ghc-8.6.5/lib/ghc-8.6.5/package.conf.d
ghc-package-path: /Users/me/Code/advent2019/.stack-work/install/x86_64-osx/lts-14.16/8.6.5/pkgdb:/Users/me/.stack/snapshots/x86_64-osx/lts-14.16/8.6.5/pkgdb:/Users/me/.stack/programs/x86_64-osx/ghc-8.6.5/lib/ghc-8.6.5/package.conf.d
snapshot-install-root: /Users/me/.stack/snapshots/x86_64-osx/lts-14.16/8.6.5
local-install-root: /Users/me/Code/advent2019/.stack-work/install/x86_64-osx/lts-14.16/8.6.5
snapshot-doc-root: /Users/me/.stack/snapshots/x86_64-osx/lts-14.16/8.6.5/doc
local-doc-root: /Users/me/Code/advent2019/.stack-work/install/x86_64-osx/lts-14.16/8.6.5/doc
dist-dir: .stack-work/dist/x86_64-osx/Cabal-2.4.0.1
/Users/me/Code/advent2019/.stack-work/install/x86_64-osx/lts-14.16/8.6.5/hpc
local-bin-path: /Users/me/.local/bin
ghc-paths: /Users/me/.stack/programs/x86_64-osx

2 个答案:

答案 0 :(得分:1)

--no-ghc-package-path解决方案应该有效。但是,您只能在Stack外部运行hdevtools。在Linux机器上,如果我确切地运行以下命令集:

$ stack new advent2019
$ cd advent2019
$ stack build
$ stack install hdevtools
$ hdevtools check src/Lib.hs

然后hdevtools会无错启动并在后台运行。

如果您的shell无法找到hdevtools,则可能是~/.local/bin不在您的路径中,因此请添加它或尝试以下操作:

$ ~/.local/bin/hdevtools check src/Lib.hs

答案 1 :(得分:0)

结果是,我在清除时忽略了.cabal目录。尽管在安装.stack之前仍然必须擦除hdevtools。还必须单独构建测试,以便获得依赖项错误。

对于那些高效使用Haskell的人,我认为这不是解决方案。让我想起了我的Windows 95天,支持人员告诉您格式化和重新安装每个问题。