2013-12-19 3 views
1

Я пытаюсь использовать http://hackage.haskell.org/package/persistent-1.2.3.0, но после его установки через «междусобойчик установить постоянные», GHC не находит ее неприкрытой-модули:Стойкие модули не найдены

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".

ответ

1
  1. Убедитесь, что вы не используете песочницы, Кабалы-DEV, hsenv, все остальное, что может влиять на ghc в поисках зависимостей.Убедитесь, что вы используете ghc/ghci, а не какие-либо обертки, и что ghc/ghci не сглажены ни к чему в вашей оболочке.

  2. Попробуйте указать пакет-db явно:

    ghci -package-db /home/apsk/.ghc/x86_64-linux-7.6.3/package.conf.d 
    
  3. Если вы запустили ghci с -v, он будет печатать (тайники) баз данных он смотрит на, как это:

    % 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 
    

    Убедитесь, что база данных, которая имеет постоянный перечислена там.

+0

Спасибо, проблема была в нескольких камерах. – aemxdp

0

Проблема возникает только в GHCi, правильно? Вы перезапустили GHCi с момента установки persistent? (Может быть, есть еще один способ получить GHCI подобрать недавно установленные пакеты, но я не знаю об этом.

+0

Нет проблем, затрагивающих как ghc, так и ghci (даже после перезапуска). – aemxdp

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 

Так что я посмотрел вокруг на SO (увидел это: Haskell Cabal: Mysterious missing or recursive dependencies), но не нашел большой ответ. Я нашел хороший один here хотя:

$ ghc-pkg list Cabal

который показал, у меня было 2 проклятые заговоров! Один из пользователей и один в глобальном. Тьфу. Поэтому я смог сделать ghc-pkg unregister --user Cabal-1.18.1.3 --force, чтобы избавиться от старого. Затем cabal install cabal автоматически отправился на 1.20, неявно в пользователя без какого-либо флага (альтернативным будет --global).

Смежные вопросы