make_tar(Name) -> Result
make_tar(Name, Opts) -> Result
Name = string()
Opts = [Opt]
Opt =
{dirs, [IncDir]} |
{path, [Dir]} |
{variables, [Var]} |
{var_tar, VarTar} |
{erts, Dir} |
erts_all | src_tests | exref |
{exref, [App]} |
silent |
{outdir, Dir} |
no_warn_sasl | warnings_as_errors |
{extra_files, ExtraFiles}
Dir = file:filename_all()
IncDir = src | include | atom()
Var = {VarName, PreFix}
VarName = PreFix = string()
VarTar = include | ownfile | omit
App = atom()
Result =
ok | error |
{ok, Module :: module(), Warnings :: term()} |
{error, Module :: module(), Error :: term()}
ExtraFiles = [{NameInArchive, file:filename_all()}]
NameInArchive = string()
创建发布包文件Name.tar.gz
。该文件必须使用以下命令在目标系统上解压和解包release_handler
在安装新版本之前。
发布资源文件Name.rel
读取以确定发布中包含哪些应用程序。然后是相关的应用资源文件App.app
读取以确定每个应用程序的版本和模块(键vsn
和modules
, 看app(4)
)。
默认情况下,发布包文件位于 Name.rel
同一目录下。也就是说,在当前工作目录中,除非 Name
包含路径。如果指定了选项{outdir,Dir}
,则它位于Dir
中。
如果 SASL 未作为应用程序包含在 .rel
文件中,则会发出警告,因为此类版本无法在升级中使用。要关闭此警告,请添加选项 no_warn_sasl
。
默认情况下,发布包包含每个包含的应用程序的目录lib/App-Vsn/ebin
和lib/App-Vsn/priv
。如果要包含更多目录,请指定选项dirs
,例如{dirs,[src,examples]}
。
所有这些文件都在当前路径中搜索。如果指定了选项{path,[Dir]}
,则该路径将附加到当前路径。通配符 *
扩展到所有匹配的目录。示例:"lib/*/ebin"
。
如果{extra_files, ExtraFiles}
给出选项然后ExtraFiles
添加其他要包含的内容后,将其添加到 tarball 中。这ExtraFiles
list 是与格式相同的文件或目录列表add_type()
元组为erl_tar:添加/3,4
选项variables
可用于为某些应用程序指定除lib
之外的安装目录。如果指定了变量 {VarName,Prefix}
并且在目录 Prefix/Rest/App[-Vsn]/ebin
中找到了应用程序,则该应用程序将作为 Rest/App-Vsn/ebin
打包到单独的 VarName.tar.gz
文件中。
示例:如果指定了选项 {variables,[{"TEST","lib"}]}
并且 myapp.app
位于 lib/myapp-1/ebin
中,则应用程序 myapp
包含在 TEST.tar.gz
中:
% tar tf TEST.tar
myapp-1/ebin/myapp.app
...
选项 {var_tar,VarTar}
可用于指定是否存储单独的包以及存储位置。在此选项中VarTar
是以下之一:
include
-
每个单独的(变量)包都包含在主
ReleaseName.tar.gz
文件中。这是默认设置。 ownfile
-
每个单独的(变量)包都会作为单独的文件生成在与
ReleaseName.tar.gz
文件相同的目录中。 omit
-
不会生成单独的(变量)包。在变量目录下找到的应用程序将被忽略。
发布包中还包含一个目录releases
,其中包含Name.rel
和一个子目录RelVsn
。 RelVsn
是 Name.rel
中指定的发行版本。
releases/RelVsn
包含重命名为 start.boot
的引导脚本 Name.boot
以及文件 relup
和 sys.config
或 sys.config.src
(如果找到)。这些文件在与 Name.rel
相同的目录、当前工作目录以及使用选项 path
指定的任何目录中搜索。对于sys.config
,如果找到sys.config.src
,则不包含该值。
如果发布包要包含新的 Erlang 运行时系统,则将指定运行时系统 {erts,Dir}
的 erts-ErtsVsn/bin
目录复制到 erts-ErtsVsn/bin
。默认情况下不会复制某些 erts 可执行文件,如果您想包含所有可执行文件,可以指定 erts_all
选项。
所有检查均具有函数make_script
在创建发布包之前执行。选项src_tests
和exref
在这里也有效。
返回值以及错误和警告的处理与说明相同make_script
.
相关用法
- erlang make_tuple(Arity, InitialValue)用法及代码示例
- erlang make_tuple(Arity, DefaultValue, InitList)用法及代码示例
- erlang make_dir用法及代码示例
- erlang max用法及代码示例
- erlang match(Table, Pattern)用法及代码示例
- erlang match_spec_run(List, CompiledMatchSpec)用法及代码示例
- erlang map_get(Key, Map)用法及代码示例
- erlang map_size(Map)用法及代码示例
- erlang max(Term1, Term2)用法及代码示例
- erlang map(Fun, Orddict1)用法及代码示例
- erlang map(Fun, MapOrIter)用法及代码示例
- erlang match(Subject, Pattern, Options)用法及代码示例
- erlang matches(Subject, Pattern, Options)用法及代码示例
- erlang mapfoldl(Fun, Acc0, List1)用法及代码示例
- erlang member用法及代码示例
- erlang min用法及代码示例
- erlang merge用法及代码示例
- erlang memory用法及代码示例
- erlang memory()用法及代码示例
- erlang min(Term1, Term2)用法及代码示例
- erlang monitor(Type :: process, Item :: monitor_process_identifier())用法及代码示例
- erlang monitor(Type :: process, Item :: monitor_process_identifier(), Opts :: [monitor_option()])用法及代码示例
- erlang merge(Fun, Orddict1, Orddict2)用法及代码示例
- erlang module(AbsForms)用法及代码示例
- erlang monitor(Socket)用法及代码示例
注:本文由纯净天空筛选整理自erlang.org大神的英文原创作品 make_tar(Name) -> Result。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。