haskell-stack不安装QuickCheck

时间:2017-08-10 03:33:27

标签: haskell-stack

尝试安装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。

1 个答案:

答案 0 :(得分:2)

简短回答:你想要stack exec -- ghc-pkg describe QuickCheck

长:

stack管理GHC的不同安装,以及多级包数据库。因此,如果您在命令行上运行ghcghc-pkg,这可能是ghc的不同版本,而不是堆栈使用的版本。

ghc-pkg通过查看您的GHC_PACKAGE_PATH环境变量来获取要查看的包数据库列表。如果未设置此变量,则它将使用您的全局和用户包DB。这些与堆栈使用的数据库不同(stack exec设置GHC_PACKAGE_PATH变量)

另请注意,stack installstack build相同。唯一的区别是它会将目标可执行文件安装到~/.local/bin。 Quickcheck没有可执行文件,因此无需使用"安装"