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 中。这ExtraFileslist 是与格式相同的文件或目录列表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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
