systools.make_tar无法在.ez存档中找到.app文件

时间:2013-02-21 13:32:37

标签: erlang release erlang-shell reltool

我正在使用reltool创建一个版本。输出文件夹rel/lib包含将ebin个文件夹打包到.ez个档案中的所有应用程序,例如crypto

crypto-2.2
crypto-2.2/priv/ (with some files in the priv folder)
crypto-2.2.ez
crypto-2.2.ez/crypto-2.2/ebin/crypto.app
crypto-2.2.ez/crypto-2.2/ebin/ (with some .beam files in the ebin folder)

我在erl文件夹中启动relebin文件夹的路径位于代码路径中,即code:get_path().返回其他文件夹(同样适用于lib文件夹中的其他应用程序):

"/usr/home/g/work/project/rel/lib/crypto-2.2.ez/crypto-2.2/ebin"

但是当试图致电systools:make_tar("releases/0.1/project").时,它抱怨它找不到.app文件(对于发布中提到的所有应用):

crypto: File not found: "crypto.app"

我看到.app文件位于存档中,只有systools由于某种原因无法看到它。我在使用ebin选项调用make_tar时尝试指定path文件夹但它似乎不起作用(与crypto.app缺失相同的错误)。也:

file:consult("/usr/home/g/work/project/rel/lib/crypto-2.2.ez/crypto-2.2/ebin/crypto.app").

给了我:{error,enotdir}

也许systools还没有处理档案?是否还有其他方法可以使用reltool创建的版本创建tar存档?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

通过将以下内容添加到您的reltool.config

,也可以通过从.ez文件中排除ebin目录来完全避免这种情况。
{excl_archive_filters, ["^include$","^priv$","^ebin$"]}

在大多数情况下,这基本上意味着禁用大多数.ez文件的创建,但是发布应该仍然可以正常工作。