Эта ошибка указывает, что ваша сборка как-то зависела от двух разных xmonad
пакетов Cabal.При компиляции чего-либо GHC сохраняет вместе с именем типа (например, Prelude.Maybe
) пакет , из которого он получен (в случае Prelude
, base
).Вы можете увидеть список пакетов, доступных для GHC с ghc-pkg list
.
. В сообщении об ошибке говорится, что docks
сгенерировал значение типа XMonad.Core.XConfig
из пакета xmonad-0.14.2@xmonad-0.14.2-50ceb56c2be27c58b715ff1418342ea50324c61ceef6f33afc6bf382abd08795
(я буду ссылаться на него как"xmonad 50" далее для краткости).Обратите внимание, что docks
сам является частью пакета xmonad-contrib
.Однако значение, ожидаемое xmonad
, относится к типу XMonad.Core.XConfig
из пакета xmonad-0.14.2@xmonad-0.14.2-8c611bf8742b1b94190ab2fa494cb2a1cd3f8666db2ba536c81ae848ea043a6b
(далее «xmonad 8»).
Это график зависимостей вашей сборки:
Предположение о том, как это произошло:
- Вы каким-то образом установили
xmonad-contrib
и / или xmonad
, либо из своих репозиториев ОС, либо путем компиляции вручную.Ваша база данных пакетов теперь содержит xmonad 50 и xmonad-contrib
. - Вы снова установили
xmonad
, и это создало другую версию пакета (xmonad 8).Тем не менее, xmonad-contrib
доступно для вас из более ранней установки, скомпилированной для xmonad 50.
Эта проблема известна как Cabal Hell ( другое объяснение ).
Что вы можете сделать дальше:
- Убедитесь, что у вас не установлено две версии GHC.
/opt/ghc
- это нестандартный путь установки, возможно, в стандартном пути вашего дистрибутива могут быть другие версии. - Узнайте, где установлены две библиотеки
xmonad
и одна xmonad-contrib
.ghc-pkg list
и ghc-pkg list --user
могут помочь в этом, или если это не удастся, используя strace
или аналогичные инструменты , чтобы увидеть, куда смотрит xmonad
при перекомпиляции. - Удалите и переустановите пакеты, чтобыу вас есть только один
xmonad
и один xmonad-contrib
в зависимости от этого.Если вы нашли дополнительные версии на предыдущем шаге, вы можете попробовать ghc-pkg unregister
их, а если нет, то могут помочь удаление полных баз данных пакетов и переустановка необходимых пакетов снова (вместе!).
В будущем постарайтесь не устанавливать пакеты, связанные с XMonad, из разных источников, и если вы хотите использовать сборки Cabal нового стиля, ознакомьтесь с руководством, посвященным сборкам нового стиля и XMonad (к сожалению, я этим не пользуюсь)не могу предложить ни одного.)