Erlang systools.make#tar can';在.ez存档中找不到.app文件

Erlang systools.make#tar can';在.ez存档中找不到.app文件,erlang,release,erlang-shell,reltool,Erlang,Release,Erlang Shell,Reltool,我正在使用reltool创建一个发行版。输出文件夹rel/lib包含所有应用程序及其ebin文件夹打包到.ez存档中,例如用于加密: 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 eb

我正在使用
reltool
创建一个发行版。输出文件夹
rel/lib
包含所有应用程序及其
ebin
文件夹打包到
.ez
存档中,例如用于
加密

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)
我在
rel
文件夹中启动
erl
ebin
文件夹的路径位于代码路径中,即
code:get_path()。
返回其他应用程序(对于
lib
文件夹中的其他应用程序也是如此):

但是,当尝试调用
systools:make_tar(“releases/0.1/project”)。
它抱怨找不到
.app
文件(对于版本中提到的所有应用程序):

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

给我:
{error,enotdir}


也许
systools
还不能处理归档文件?使用
reltool
发布的版本是否有其他方法创建tar存档?任何帮助都将不胜感激。

您可以通过将以下内容添加到reltool.config中,将ebin目录从.ez文件中排除,从而完全避免这种情况

{excl_archive_filters, ["^include$","^priv$","^ebin$"]}

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

谢谢,我知道这一点。但这将意味着完全禁用.ez存档(因为目前只有ebin在那里)。因此,与其禁用该功能,我宁愿找到一种使其工作的方法,或者听某人说,在某些旧模块中,访问.ez归档文件不起作用。但在某种程度上,这是解决这个问题的一个办法。只是不是我(理想)想要的。顺便说一句,另一个解决办法是解包所有.ez归档文件并运行SYSTOOL,但同样,它似乎仍然不是正确的解决方案。明白。那我就不知道解决办法了。我不记得我停止使用.ez文件的确切原因,但我遇到了足够多的麻烦,我决定这不是工作的麻烦。如果你还没有问过Erlang邮件列表,我建议你试一试。
crypto: File not found: "crypto.app"
file:consult("/usr/home/g/work/project/rel/lib/crypto-2.2.ez/crypto-2.2/ebin/crypto.app").
{excl_archive_filters, ["^include$","^priv$","^ebin$"]}