2012-04-02 16 views
5

Vệ sinh Snap thư mục nguồn của dự án (loại bỏ quận) làm đơn khiếu nại sau đây:Haskell Snap: triển khai ứng dụng và thời gian chạy phụ thuộc

A web handler threw an exception. Details: 
GHC error: can't find a package database at dist/package.conf.inplace 

Vì vậy, nếu tôi làm sạch các thư mục nguồn nó ngừng hoạt động? Điều này chỉ xảy ra nếu tôi biên dịch với cờ phát triển?

Điều này mang lại cho tôi câu hỏi về triển khai ứng dụng nhanh. Chúng ta thực sự rsync với máy chủ và phụ thuộc thời gian chạy là gì? Tôi, về giao dịch, không muốn cài đặt toàn bộ nền tảng haskell trên máy chủ triển khai. Tất cả những gì tôi cần trên máy chủ là tệp thi hành dự án và các tệp tĩnh như * .tpl, * .css, v.v. Điều này có đúng không?

Tôi có thể thấy hai cách để triển khai ứng dụng: rsync tệp thực thi và các phụ thuộc của nó hoặc tạo tarball phân phối nhị phân và chuyển nó sang máy chủ. Thực hành phổ biến là gì?

Tôi cần bao gồm những tệp nào trong tập lệnh tarball hoặc rsync nhị phân để đáp ứng tất cả các phụ thuộc thời gian chạy?

Cảm ơn

Trả lời

3

Trước tiên, có, đó chỉ là kết quả của việc sử dụng chế độ phát triển. Nó sử dụng tất cả các loại hiện vật từ môi trường biên dịch của bạn. (Đây là cách duy nhất nó có thể đảm bảo nó sao chép môi trường biên dịch của bạn đúng cách khi tải lại động.) Nếu bạn xóa chúng, nó sẽ ngừng hoạt động.

Nhưng ở chế độ sản xuất, tài nguyên nhị phân và tĩnh là tất cả những gì bạn cần. Vâng, và bất kỳ thư viện động GHC nào liên kết tệp thực thi. Điều này chủ yếu là các công cụ chuẩn như libc. Điều duy nhất đôi khi bị thiếu trong cài đặt Linux chuẩn là libgmp. Tất nhiên, nếu bạn đang sử dụng bất kỳ mã FFI nào liên kết với các thư viện động khác, bạn sẽ cần phải chắc chắn rằng các thư viện đó cũng được đề cập đến.

+0

Cảm ơn bạn. Tôi nghĩ rằng nó sẽ là một cái gì đó để làm với chế độ phát triển. –