尝试安装QuickCheck,我运行$ stack install QuickCheck
。
$ stack install QuickCheck
$
命令暂停一秒钟,然后返回shell打印只有一个空白行。但是,不似乎可以成功安装QuickCheck,因为无法通过运行$ ghc-pkg list
找到该包。
$ ghc-pkg list | grep QuickCheck
$
并且,因为我在编译导入该模块的文件时无法导入Test.QuickCheck
。
$ ghc ImportsQuickCheck.hs
[1 of 1] Compiling ImportsQuickCheck ( ImportsQuickCheck.hs, ImportsQuickCheck.o )
ImportsQuickCheck.hs:6:1: error:
Failed to load interface for ‘Test.QuickCheck’
Use -v to see a list of the files searched for.
$
我从我的主文件夹中运行stack install QuickCheck
,将其安装到我的全局安装中,而不是从堆栈项目中运行。{/ p>
为什么stack install QuickCheck
无法安装该软件包?
为什么在失败时没有输出?
有没有更好的方法可以管理我的全局包集?也许使用ghc-pkg
代替stack
?我之前尝试过cabal-install
,但遇到的问题远远超过我使用stack
的问题。
我使用的是nixos 17.03。
答案 0 :(得分:2)
简短回答:你想要stack exec -- ghc-pkg describe QuickCheck
长:
stack
管理GHC的不同安装,以及多级包数据库。因此,如果您在命令行上运行ghc
或ghc-pkg
,这可能是ghc的不同版本,而不是堆栈使用的版本。
ghc-pkg
通过查看您的GHC_PACKAGE_PATH
环境变量来获取要查看的包数据库列表。如果未设置此变量,则它将使用您的全局和用户包DB。这些与堆栈使用的数据库不同(stack exec
设置GHC_PACKAGE_PATH
变量)
另请注意,stack install
与stack build
相同。唯一的区别是它会将目标可执行文件安装到~/.local/bin
。 Quickcheck没有可执行文件,因此无需使用"安装"