2017-08-10 45 views
0

試圖安裝QuickCheck,我運行$ stack install QuickCheckhaskell-stack不安裝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,而不是從堆項目中,它不會。

爲什麼stack install QuickCheck無法安裝該軟件包?

爲什麼它在失敗時不會輸出?

有沒有更好的方法可以管理我的全局包?也許使用ghc-pkg而不是stack?我以前試過cabal-install,但會遇到這樣的問題,遠遠超過我使用stack

我正在使用nixos 17.03。

回答

0

簡短的回答:你想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沒有可執行文件,因此不需要使用「安裝」