Xmonad не может найти модуль XMonad (или любой другой)

Всякий раз, когда 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

и все равно выдает ошибку. Любые попытки импорта других модулей дают аналогичные результаты. У меня установлены xmonad и xmonad-contrib из репозиториев Arch, поэтому модули должны быть правильно указаны в пути поиска ghc, верно? Я попытался переустановить пакеты из Cabal, как предлагали некоторые другие источники, но это обернулось полной неразберихой, поэтому я вернулся к репозиториям Arch, которые должны работать. Вид в недоумении, куда идти отсюда; любая помощь будет принята с благодарностью.

РЕДАКТИРОВАТЬ: 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, когда все пакеты и их зависимости были разрешены из репозиториев Arch с помощью pacman.


person Decalis    schedule 13.03.2014    source источник
comment
Пожалуйста, покажите вывод ghc-pkg list xmonad и ghc-pkg check   -  person Roman Cheplyaka    schedule 14.03.2014
comment
Добавлено в конец основного вопроса.   -  person Decalis    schedule 14.03.2014
comment
Нет, это выглядит нормально. У вас установлены другие версии ghc? Вы создавали песочницы? Попробуйте удалить (или переименовать) каталоги ~/.cabal и ~/.ghc и посмотрите, поможет ли это. Проверьте, нет ли у вас других xmonad двоичных файлов в вашем $PATH.   -  person Roman Cheplyaka    schedule 14.03.2014
comment
Удаление ~/.ghc, кажется, исправило все аберрантное поведение. Перезапуск XMonad работает гладко, настройки обновляются соответствующим образом, и теперь ghc-pkg check жалуется только на Haddock (который всегда был). Спасибо за помощь! Если вы хотите опубликовать это как ответ, я приму это.   -  person Decalis    schedule 14.03.2014
comment
Если бы я только знал, почему это решило проблему! Из опубликованных вами данных не похоже, что ваша глобальная xmonad была затенена локальной или чем-то в этом роде. Хорошо, я опубликую несколько общих советов по таким проблемам.   -  person Roman Cheplyaka    schedule 15.03.2014


Ответы (2)


В таких случаях первое, что нужно попробовать, — это «начать с нуля», то есть забыть обо всех локальных пакетах, которые вы могли установить в прошлом.

Для этого очистите (или переименуйте/переместите) базу данных пакетов ghc, которая находится под ~/.ghc/$arch-$os-$ghcver (например, ~/.ghc/i386-linux-7.6.3). Или просто удалите ~/.ghc вообще.

person Roman Cheplyaka    schedule 14.03.2014

Для меня решением было запустить ghc-pkg recache, так как кэш ghc по какой-то причине просто не синхронизировался. Стоит попробовать, прежде чем стирать всю базу данных ghc.

person André Laszlo    schedule 25.10.2017