主页

索引

模块索引

搜索页面

systools模块

A Set of Release Handling Tools This module contains functions to generate boot scripts (.boot, .script), a release upgrade file (relup), and release packages.

描述:

boot scripts:           .boot, .script
release upgrade file:   .relup

make_relup/3/4

结构:

make_relup(Name, UpFrom, DownTo) -> Result
make_relup(Name, UpFrom, DownTo, [Opt]) -> Result
类型:
Name = string()
UpFrom = DownTo = [Name2 | {Name2,Descr}]
 Descr = term()
Opt = {path,[Dir]} | restart_emulator | silent | noexec | {outdir,Dir} | warnings_as_errors
 Dir = string()
Result = ok | error | {ok,Relup,Module,Warnings} | {error,Module,Error}
 Relup, see relup(4)
 Module = atom()
 Warnings = Error = term()

说明:

生成release upgrade包含升级、降级指令文件relup.
这些指令会在运行时系统安装新版本被release_handler使用。
relup文件默认在当前目录,可以使用选项{outdir,Dir}指定

  对比Name.rel文件与UpFrom和DownTo指定的Name2.rel文件对比:
  1.哪个application会被删除(Name.rel有但Name2.rel没有)
  2.哪个application会被增加(Name.rel没有但Name2.rel有)
  3.哪个application会被升降级(都有但版本不同)
  4.如果2个rel文件中的erts版本不同,在升降级后要重启虚拟机

Opt选项:

{path,[Dir]}: .app文件和.appup文件要在同一目录,此选项指定的目录会被append到当前目录
restart_emulator: 升降级后重启系统
silent: 默认error和warning信息会打印到tty,函数返回ok或error。如果指定此选项,函数返回:
    1.{ok,Relup,Module,Warnings}:Relup:是release的upgrade file
    2.{error,Module,Error}说明:Error和Warnings会通过调用
    Module:format_warning(Warnings) or Module:format_error(Error)
    转化为字串
noexec: 类似silent只是不创建relup文件
warnings_as_errors: warnings会被当作errors

其他:

OTP R15应该进行了比较大的更新,更老版本升级到OTP R15以上需要特殊处理

make_script/1/2

结构:

make_script/(Name) -> Result
make_script(Name, [Opt]) -> Result
类型:
Name = string()
Opt = src_tests | {path,[Dir]} | local | {variables,[Var]} | exref | {exref,[App]}] | silent | {outdir,Dir} | no_dot_erlang | no_warn_sasl | warnings_as_errors
 Dir = string()
 Var = {VarName,Prefix}
  VarName = Prefix = string()
 App = atom()
Result = ok | error | {ok,Module,Warnings} | {error,Module,Error}
 Module = atom()
 Warnings = Error = term()

说明:

输入Name.rel文件生成Name.script和它的二进制版本以及boot文件Name.boot

Opt:

local: 在boot script中,使用发现应用的目录代替$ROOT/lib($ROOT是installed release的根目录)
{outdir,Dir}: 生成文件.script和.boot的目录。默认是当前目录,可以改变
src_tests: 模块源码缺失或比对象源码更新时报警
no_warn_sasl: 当SASL不是.rel文件中的一个application,会有警告,
    因为这样的release不能用于upgrade,增加这个选项可以关闭警告
{path,[Dir]}: Dir会被append到当前路径
{variables,[Var]}: 指定安装目录代替$ROOT/lib
  实例:{variables,[{"TEST","lib"}]}:
    如myapp.app在目录lib/myapp/ebin下: "$TEST/myapp-1/ebin"
    如myapp.app在目录lib/test下: $TEST/test/myapp-1/ebin
exref | {exref,[App]}: 使用工具Xref检查
no_dot_erlang: 不包括在boot期间加载.erlang文件

make_tar/1/2

结构:

make_tar(Name) -> Result
make_tar(Name, [Opt]) -> Result
类型:
Name = string()
Opt = {dirs,[IncDir]} | {path,[Dir]} | {variables,[Var]} | {var_tar,VarTar} | {erts,Dir} | src_tests | exref | {exref,[App]} | silent | {outdir,Dir} | | no_warn_sasl | warnings_as_errors
 Dir = string()
 IncDir = src | include | atom()
 Var = {VarName,PreFix}
  VarName = Prefix = string()
 VarTar = include | ownfile | omit
 Machine = atom()
 App = atom()
Result = ok | error | {ok,Module,Warnings} | {error,Module,Error}
 Module = atom()
 Warning = Error = term()

说明:

创建release package文件Name.tar.gz.此文件需要使用release_handler解压缩
读取Name.rel文件确定哪些applications会包含到release中,然后读对应的App.app文件确定version和modules

选项:

{var_tar,VarTar}: 指定在何处存储单独的包,其他变量VarTar:
  1.include:
  Each separate (variable) package is included in the main ReleaseName.tar.gz file. This is the default.
  2.ownfile
  Each separate (variable) package is generated as a separate file in the same directory as the ReleaseName.tar.gz file.
  3.omit
  No separate (variable) packages are generated. Applications that are found underneath a variable directory are ignored.

script2boot/1

结构:

script2boot(File) -> ok | error
类型:
File = string()

说明:

通过Name.script生成Name.boot文件

主页

索引

模块索引

搜索页面