GHC не может найти мои установленные пакеты Cabal - PullRequest
9 голосов
/ 09 января 2011

Я установил ghc 6.12.3, а затем платформу Haskell.Я пытаюсь скомпилировать тестовую программу:

$ ghc test.hs
test.hs:3:0:
    Failed to load interface for `Bindings':
      Use -v to see a list of the files searched for.

, поэтому, естественно, я делаю

cabal install Bindings

, которая отлично работает, и помещает пакет в ~ / .cabal / lib /bindings-0.1.2 Проблема в том, что когда я снова собираюсь скомпилировать с помощью ghc, он все равно не находит пакет, который я установил с помощью cabal.Компиляция в подробном режиме дает:

ghc -v test.hs
Using binary package database: /home/ludflu/ghc/lib/ghc-6.12.3/package.conf.d/package.cache
Using binary package database: /home/ludflu/.ghc/x86_64-linux 6.12.3/package.conf.d/package.cache

Как предложил другой пользователь stackoverflow, я попытался:

ghc-pkg describe rts > rts.pkg
vi rts.pkg                      # add the /home/ludflu/.cabal/lib to `library-dirs` field
ghc-pkg update rts.pkg

Но безрезультатно.Как добавить .cabal в список каталогов пакетов для поиска?Спасибо!

Ответы [ 2 ]

6 голосов
/ 10 января 2011

Вы можете проверить, какие пакеты установлены с ghc-pkg list. Возможно, вам нужно либо указать пакеты для ghc с помощью -package <pkgname>, либо я считаю, что добавление --make вызовет поиск зависимостей, включая пакеты.

Редактировать: пакет привязок действительно устарел, см. страница взлома . Это не проблема управления пакетами, единственный доступный модуль - это Bindings.Deprecated, который вы прекрасно можете загрузить, даже если это пустой модуль. Я считаю, что соответствующие части были разбиты на bindings-<module>, поэтому, если вам нужна функциональность привязок, вам следует обратиться к этим пакетам.

2 голосов
/ 18 июня 2013

http://www.haskell.org/haskellwiki/Cabal-install

Следует особо отметить, что пакеты по умолчанию устанавливаются локально с помощью cabal, а команды

runhaskell Setup configure
runhaskell Setup build
runhaskell Setup install

устанавливаются глобально по умолчанию.Если вы устанавливаете пакет глобально, локальные пакеты игнорируются.Значение по умолчанию для установки cabal можно изменить, отредактировав файл конфигурации.

Я получил ту же ошибку с командой runhaskell.Я использовал cabal в каталоге, в котором был файл .cabal, и смог устранить ошибку.

...