2011-01-09 1 views
7

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

$ 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/привязок-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 в список каталогов пакетов для поиска? Спасибо!

ответ

6

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

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

+0

ghc-list создает список пакетов, который включает в себя привязки. Похоже, что пакет устарел - поэтому его не найти. Добавление аргумента -package не помогло. Я пробовал некоторые другие примеры, которые не использовали Bindings, и они отлично работали, поэтому я буду одержим некоторыми другими проблемами! :) Спасибо за вашу помощь. – nont

2

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

Одна вещь, чтобы быть в курсе, особенно, в том, что пакеты устанавливаются локально по умолчанию, междусобойчик, в то время как команды

runhaskell Setup configure 
runhaskell Setup build 
runhaskell Setup install 

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

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