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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
