0

我是一个haskell初学者,我使用代码的出现作为学习示例。在为今年进行设置时,我重新安装了堆栈(在新机器上,但是复制了大多数点文件)并且从我去年的笔记开始并且无法让 hdevtools 再次工作。

我已经建立了一个新项目stack new advent2019。如果它对stack build“空”项目很重要,似乎需要几分钟 - 似乎比去年长得多。我用stack build 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.
  • stack exec --no-ghc-package-path hdevtools -- check src/Lib.hs-这里提到
  • 我删除了所有可能的相关文件:~/.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
4

2 回答 2

1

--no-ghc-package-path解决方案应该有效。但是,您可以hdevtools在 Stack 之外运行。在 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
于 2019-12-01T17:37:07.413 回答
0

原来我忽略了.cabal清除中的目录。.stack虽然在安装之前仍然必须擦拭hdevtools。还必须单独构建测试,所以我会得到依赖错误。

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

于 2019-12-02T07:36:39.063 回答