2010-04-25 42 views
30

Đối với các gói được tạo, cài đặt và sử dụng trong Haskell, mối quan hệ giữa ghc-pkgcabal là gì?Mối quan hệ giữa ghc-pkg và cabal là gì?

Vai trò của chúng là gì - khi nào bạn sẽ sử dụng vai trò này, mặt khác hoặc sử dụng cả hai?

Chúng là công cụ bổ sung, công cụ cạnh tranh hay đơn giản là các công cụ thực hiện các công việc khác nhau?

Trả lời

23

mặt đồ họa, sự phụ thuộc là:

Packages GHC can use 
    | 
Are registered with "ghc-pkg register" 
    | 
And (almost always) built with Cabal 
    | 
With build dependencies resolved by cabal-install 
    | 
From Hackage. 
+0

Có đúng rồi rằng bất kỳ gói registerable với GHC-pkg phải được xây dựng với Cabal? –

+3

Không, điều đó không đúng. Trong những ngày cũ tồi tệ không có Cabal, và chúng tôi đăng ký tất cả các gói của chúng tôi với thực hiện. 'làm cho đăng ký' kịch bản abounded. Xem 'ghc-pkg register' –

8

ghc-pkg là giao diện trực tiếp đến cơ sở dữ liệu gói của GHC. Cabal là một công cụ cung cấp một cấu trúc phân phối nhất quán cho các gói và một cách để chỉ định siêu dữ liệu như phụ thuộc giữa các gói, số phiên bản và thông tin xây dựng.

Sử dụng Cabal để cài đặt gói sẽ đăng ký nó với ghc cho bạn (trong số những thứ khác), nhưng đó thực sự là mức độ trùng lặp.

Lưu ý rằng ghc-pkg cũng cung cấp chức năng (theo như tôi biết) Cabal không, chẳng hạn như ẩn các gói đã cài đặt.

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