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