9

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を追加するにはどうすればよいですか?ありがとうございました!

4

2 に答える 2

6

でインストールされているパッケージを確認できますghc-pkg listghcパッケージをwithで指定する必要があるか、toを-package <pkgname>追加--makeすると、パッケージを含む依存関係の追跡がトリガーされると思います。

編集:バインディングパッケージは確かに廃止されています。ハッキングページを参照してください。これはパッケージ管理の問題ではありません。使用可能な唯一のモジュールBindings.Deprecatedは、空のモジュールであっても完全にロードできるモジュールです。関連する部分がに分割されているbindings-<module>と思います。したがって、バインディング機能が必要な場合は、それらのパッケージを調べる必要があります。

于 2011-01-09T21:13:23.697 に答える
3

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

特に注意すべきことの1つは、パッケージはデフォルトでcabalによってローカルにインストールされるのに対し、コマンドは

runhaskell Setup configure
runhaskell Setup build
runhaskell Setup install

デフォルトでグローバルにインストールします。パッケージをグローバルにインストールする場合、ローカルパッケージは無視されます。cabal-installのデフォルトは、構成ファイルを編集することで変更できます。

runhaskellコマンドで同じエラーが発生していました。.cabalファイルがあるディレクトリでcabalを使用し、エラーを解決できました。

于 2013-06-18T13:53:14.467 に答える