2011-01-09 40 views
7

Tôi đã cài đặt ghc 6.12.3 và sau đó là Nền tảng Haskell. Tôi đang cố gắng để biên dịch một chương trình thử nghiệm:ghc không thể tìm thấy các gói cài đặt cabal của tôi

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

như vậy, một cách tự nhiên, tôi làm

cabal install Bindings 

nào hoạt động tốt, và đặt các gói trong ~/.cabal/lib/bindings-0,1. 2 Vấn đề là, khi tôi đi để biên dịch lại với ghc, nó vẫn không tìm thấy gói tôi đã cài đặt với cabal. biên dịch trong chế độ verbose cho:

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 

Theo đề nghị của một người dùng khác stackoverflow, tôi đã cố gắng:

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

Nhưng vô ích. Làm cách nào để thêm .cabal vào danh sách các thư mục gói để tìm kiếm? Cảm ơn bạn!

Trả lời

6

Bạn có thể kiểm tra gói nào được cài đặt với ghc-pkg list. Có thể bạn cần phải chỉ định các gói cho ghc với -package <pkgname> hoặc tôi tin rằng việc thêm --make để kích hoạt việc theo dõi phụ thuộc, bao gồm cả các gói.

Chỉnh sửa: gói ràng buộc đã lỗi thời, xem the hackage page. Đây không phải là vấn đề về quản lý gói, mô-đun duy nhất có sẵn là Bindings.Deprecated, mà bạn có thể tải hoàn toàn, mặc dù đây là mô-đun trống. Tôi tin rằng các phần liên quan đã được chia ra thành bindings-<module>, vì vậy nếu bạn muốn các chức năng ràng buộc bạn nên xem xét các gói đó.

+0

ghc-list tạo danh sách các gói bao gồm Bindings. Có vẻ như gói không còn được dùng nữa - vì vậy nó không được tìm thấy. Thêm đối số -package không giúp ích gì. Tôi đã thử một số ví dụ khác mà không sử dụng Bindings, và họ làm việc tốt, vì vậy tôi sẽ ám ảnh về một số vấn đề khác! :) Cảm ơn bạn đã giúp đỡ. – nont

2

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

Một điều cần phải đặc biệt chú ý, đó là các gói được cài đặt tại địa phương theo mặc định bởi cabal, trong khi các lệnh

runhaskell Setup configure 
runhaskell Setup build 
runhaskell Setup install 

cài đặt trên toàn cầu theo mặc định. Nếu bạn cài đặt một gói trên toàn cầu, các gói cục bộ sẽ bị bỏ qua. Mặc định cho cài đặt cabal có thể được sửa đổi bằng cách chỉnh sửa tập tin cấu hình.

Tôi đã gặp lỗi tương tự với lệnh runhaskell. Tôi đã sử dụng cabal trong thư mục có tệp .cabal và có thể giải quyết lỗi.

Các vấn đề liên quan