5

清理 Snap 项目源目录(删除 dist)会产生以下抱怨:

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

所以如果我清理源目录它会停止工作?仅当我使用开发标志编译时才会发生这种情况吗?

这让我想到了快照应用程序部署的问题。我们实际上 rsync 到服务器的内容是什么,运行时依赖项是什么?我当然不想在部署服务器上安装整个 haskell 平台。我在服务器上需要的只是项目可执行文件和 *.tpl、*.css 等静态文件。这是否正确?

我可以看到两种部署应用程序的方法:rsync 可执行文件及其依赖项或创建二进制分发 tarball 并将其转移到服务器。常见的做法是什么?

我需要在二进制 tarball 或 rsync 脚本中包含哪些文件才能满足所有运行时依赖项?

谢谢

4

1 回答 1

3

首先,是的,这只是使用开发模式的结果。它使用编译环境中的各种工件。(这是确保在进行动态重新加载时正确复制编译环境的唯一方法。)如果删除它们,它将停止工作。

但在生产模式下,您只需要二进制和静态资源。好吧,无论 GHC 将可执行文件链接到什么动态库。这主要是像 libc 这样的标准东西。标准 linux 安装中有时缺少的唯一一个是 libgmp。当然,如果您使用任何绑定到其他动态库的 FFI 代码,您需要确保这些库也被覆盖。

于 2012-04-02T16:39:45.287 回答