5

Snap プロジェクトのソース ディレクトリをクリーンアップする (dist を削除する) と、次のような問題が発生します。

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

ソースディレクトリをクリーンアップすると、動作しなくなりますか? これは、開発フラグを使用してコンパイルした場合にのみ発生しますか?

これは、スナップ アプリケーションの展開の問題につながります。実際にサーバーに再同期するのは何ですか?実行時の依存関係は何ですか? もちろん、展開サーバーに haskell プラットフォーム全体をインストールしたくありません。サーバー上で必要なのは、プロジェクトの実行可能ファイルと、*.tpl、*.css などの静的ファイルだけです。これは正しいですか?

アプリケーションをデプロイする方法は 2 つあります。実行可能ファイルとその依存関係を rsync する方法と、バイナリ配布用の tarball を作成してサーバーに移動する方法です。一般的な慣行は何ですか?

すべての実行時の依存関係を満たすために、バイナリ tarball または rsync スクリプトに正確にどのファイルを含める必要がありますか?

ありがとう

4

1 に答える 1

3

まず、はい、これは開発モードを使用した結果です。コンパイル環境からのあらゆる種類のアーティファクトを使用します。(これは、動的リロードを行うときにコンパイル環境を適切に複製することを保証できる唯一の方法です。) それらを削除すると、動作が停止します。

しかし、プロダクション モードでは、必要なのはバイナリ リソースと静的リソースだけです。まあ、GHCが実行可能ファイルをリンクする動的ライブラリが何であれ。これはほとんど libc のような標準的なものです。標準の Linux インストールで欠落することがある唯一のものは libgmp です。もちろん、他の動的ライブラリにバインドする FFI コードを使用している場合は、それらのライブラリもカバーされていることを確認する必要があります。

于 2012-04-02T16:39:45.287 に答える