Xmonad找不到模块XMonad(或其他任何模块)

12
无论xmonad何时启动、重新启动或重新编译,我都会收到一个xmessage:
xmonad.hs:1:8:
Could not find module `XMonad'
 Perhaps you meant
    Monad (needs flag -package haskell98-2.0.0.2)
    CgMonad (needs flag -package ghc-7.6.3)
    DsMonad (needs flag -package ghc-7.6.3)
 Use -v to see a list of the files searched for

这不会阻止它启动,但我只能在系统重新启动时看到对xmonad或xmobar设置的更新。我的当前xmonad.hs只是

import XMonad

main = xmonad defaultConfig

尝试导入其他模块时,仍然出现错误。我从Arch存储库中安装了xmonadxmonad-contrib,因此模块应该正确地在ghc搜索路径中,对吗?我尝试过像其他一些来源建议的那样从Cabal重新安装软件包,但它变成了一个完整的混乱,所以我回到了应该有效的Arch repos。有点不知道该怎么办了,非常感谢任何帮助。

编辑:ghc-pkg list xmonad返回

/usr/lib/ghc-7.6.3/packag.conf.d
    xmonad-0.11
/home/decalis/.ghc/x86_64-linux-7.6.3/package.conf.d

并且 ghc-pkg check 的输出在这里: http://pastebin.com/BsCPMn8M。看完之后问题更加明确了,但我仍然不明白为什么会搜索 ~/.cabal,因为所有的包及其依赖都是通过 pacman 从 Arch 存储库中解析的。


请展示ghc-pkg list xmonadghc-pkg check的输出。 - Roman Cheplyaka
添加到主问题底部。 - Decalis
不,看起来很正常。您安装了其他ghc版本吗?您创建了任何沙箱吗?尝试删除(或重命名)~/.cabal~/.ghc目录,然后查看是否有帮助。检查您的$PATH中是否有任何其他xmonad二进制文件。 - Roman Cheplyaka
删除 ~/.ghc 似乎已经解决了所有异常行为。重新启动 XMonad 工作顺畅,设置更新适当,并且 ghc-pkg check 现在只抱怨 Haddock(它一直都这样)。感谢您的帮助!如果您想将其发布为答案,我会接受它。 - Decalis
如果我知道为什么那样做可以解决问题就好了!从您发布的数据来看,似乎您的全局xmonad没有被本地xmonad遮盖或其他类似情况。好的,我会发布一些关于这类问题的一般建议。 - Roman Cheplyaka
2个回答

8

对我来说解决方案是运行ghc-pkg recache,因为 ghc 缓存由于某种原因不同步。在清除整个 ghc 数据库之前值得尝试。


7
在这种情况下,首先要尝试的一件事是“从头开始”,即忘记过去安装的所有本地软件包。
为此,请清除(或重命名/移动)ghc的软件包数据库,该数据库位于〜/ .ghc / $arch-$os-$ghcver 下(例如〜/ .ghc / i386-linux-7.6.3 )。或者干脆删除〜/ .ghc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接