systools.make_tar не может найти файлы.app в архиве.ez
Я создаю релиз с 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
в rel
папка. Путь к ebin
папка находится в пути кода, т.е. 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
еще не работает с архивами? Есть ли другой способ создания архива tar из релиза, сделанного с reltool
? Любая помощь будет принята с благодарностью.
1 ответ
Вы могли бы избежать этого вообще, также исключив каталог ebin из файлов.ez, добавив следующее в ваш reltool.config
{excl_archive_filters, ["^include$","^priv$","^ebin$"]}
В большинстве случаев это будет означать отключение создания большинства файлов.ez, но релиз все равно должен работать нормально.