我正在尝试使用http://hackage.haskell.org/package/persistent-1.2.3.0,但在通过“cabal install persistent”安装后,ghc找不到它的exposed-modules:
Prelude> import Database.Persist.Types
<no location info>:
Could not find module `Database.Persist.Types'
It is not a module in the current program, or in any known package.
ghc-pkg工作正常:
$ ghc-pkg find-module Database.Persist.Types
/var/lib/ghc/package.conf.d
/home/apsk/.ghc/x86_64-linux-7.6.3/package.conf.d
persistent-1.2.3.0
我错过了什么或者这只是cabal / persistent / ghc的错误吗?我的ghc是7.6.3,顺便说一句。
另外,我试过没有效果:“ghc-pkg recache”; “ghc-pkg check”;安装以前的版本;使用和不使用“sudo”和/或“--global”重新安装。
答案 0 :(得分:1)
检查您是否在使用沙箱,cabal-dev,hsenv以及其他任何可能影响ghc寻找依赖关系的内容。确保你使用的是ghc / ghci,而不是任何包装器,并且ghc / ghci没有别名的shell中的任何内容。
尝试明确指定package-db:
ghci -package-db /home/apsk/.ghc/x86_64-linux-7.6.3/package.conf.d
如果您使用-v
启动ghci,它将打印它所查看的(缓存)数据库,如下所示:
% ghci -v
GHCi, version 7.6.3: http://www.haskell.org/ghc/ :? for help
Glasgow Haskell Compiler, Version 7.6.3, stage 2 booted by GHC version 7.4.2
Using binary package database: /opt/ghc763/lib/ghc-7.6.3/package.conf.d/package.cache
Using binary package database: /home/feuerbach/.ghc/i386-linux-7.6.3/package.conf.d/package.cache
确保那里列出了具有持久性的数据库。
答案 1 :(得分:1)
希望对某人有帮助。使用ghci -v
我查看是否存在持久性,并看到了这一点:
package persistent-2.0.8-cec952b1a61645f47dbec3b0b0cbcef4 is unusable due to missing or recursive dependencies: aeson-0.8.0.0-1bd8b5254a1dd30c0fe6acc346ad7de7 attoparsec-0.12.1.2-48393fcdbcf426085b696dc4409d9270 conduit-1.2.0.2-39f9cd0430ed7b7f4306899cbeb1ed83 monad-logger-0.3.7.2-3e6a80e9b3adf31497ff04514bdf2919 resource-pool-0.2.3.0-c02186641e7173f72887d5e65a646ac1 scientific-0.3.3.1-13e0eefbd7215e4503420c3d0a6fdb82 unordered-containers-0.2.5.0-147c3bb8f4a2da7d753455e75af30b92
所以我环顾四周(看到这个:Haskell Cabal: Mysterious missing or recursive dependencies),但没有找到一个好的答案。我确实发现了一个很好的here:
$
ghc-pkg list Cabal
这显示我有两个该死的阴谋!一个在用户,一个在全球。啊。所以我能够ghc-pkg unregister --user Cabal-1.18.1.3 --force
去除旧的。{1}}。然后cabal install cabal
自动进入1.20,隐式进入没有任何标记的用户(替换为--global
)。
答案 2 :(得分:0)
这个问题只发生在GHCi,对吧?你安装persistent
后重启了GHCi吗? (也许有另一种让GHCi获取新安装包的方法,但我不知道。