英文看不太懂。。。
首先启动erl是可以指定-env ERL_LIBS "." 这个变量可以告诉erlang到哪里去找到OTP application
对于一些application,他关闭后erlangVM任然在运行,我们可以通过init:stop()来关闭虚拟机
erlang可以使用systools来进行打包,创建.rel文件,比如:
{release,
{"erlcount", "1.0.0"},
{erts, "5.8.4"},
[{kernel, "2.14.4"},
{stdlib, "1.17.4"},
{ppool, "1.0.0", permanent},
{erlcount, "1.0.0", transient}]}.
这里面填写了需要的application的版本以及启动策略,我们可以通过application:which_applications()来查看kernel以及stdlib的版本。erlang虚拟机需要通过一个引导脚本来启动自己,使用systools:make_script
(
"erlcount-1.0"
, [
local
]).后可以生成erlcount-1.0.script
and erlcount-1.0.boot文件。
然后我们可以将他们打包,这样的话就可以进行分布了,使用systools:make_tar
(
"erlcount-1.0"
, [{
erts
,
"/usr/local/lib/erlang/"
}])
.systools会寻找rel文件和erts,如果这里的erts不指定的话,release将不能独自运行,而且erts取决于在目标系统上已经安装的版本。
打包后会生成erlcount-1.0.tar.gz文件,解压后可以看到目录像是
erts-8.0/ lib/ releases/
erts-8.0包含了运行时系统,lib文件夹包含了所有我们需要的applications,release有引导文件等等。
将文件解压后使用erl -boot release/1.0.0/start就可以启动该release了。
除了使用systools,还可以使用更复杂但更牛逼的reltool。。。
后面的不写了。。这个了解下也就差不多了。反正有rebar