[转]使用target_system进行erlang应用的发行
转自:http://blogold.chinaunix.net/u3/104903/showart_2348532.html
一个简单实现了OTP的Server:echoline,一个Helloworld级别的OTP应用,目录结构如下:
- ./src/echoline_app.erl
- ./src/echoline_sup.erl
- ./src/echoline_server.erl
- ./src/tcp_server.erl
- ./ebin/echoline_app.app
- ./priv/
- ./include/
- ./echoline_rel.rel
- ./Emakefile
这是一个普通的Erlang应用,可以直接使用 erl -make 来编译, Emakefile 内容如下:
- {'src/*', [debug_info,{i,'include'},{outdir,'ebin'}]}.
echoline_app.app 内容如下:
- {application, echoline_app,
- [{description, "Echoline Server"},
- {vsn, "1"},
- {modules, [echoline_app, echoline_sup, echoline_server, tcp_server]},
- {registered, []},
- {applications, [kernel, stdlib, sasl]},
- {mod, {echoline_app,[]}}
- ]}.
但是这个应用仅仅只能在安装了Erlang的环境下启动。这时候可以这样:
- erl -pa ./ebin
- 1> application:load(echoline).
- ok
来加载这个应用。接下来,可以生成一个Release,它需要echoline_rel.rel这个文件,内容为:
- {release,
- {"echoline_rel", "1"},
- {erts, "5.5.4"},
- [{kernel, "2.11.4"},
- {stdlib, "1.14.4"},
- {sasl, "2.1.5"},
- {echoline_app, "1"}]
- }.
注意,上面的模块版本以实际为主,我用的是R11B-4。而且{echoline, “1″}这句的 版本号,app名称 要跟echoline.app一致。
接着运行这两步就可以生成能够用于分发的release:
- 2> systools:make_script("echoline_rel", [local]).
- ok
- 3> systools:make_tar("echoline_rel").
- ok
程序会在根目录下面生成
- echoline_rel.boot
- echoline_rel.script
- echoline_rel.tar.gz
三个文件。这个tar.gz可以直接用于部署到其他机器上面。同时,还能够以
- erl -boot echoline_rel
这种方式启动应用。
但是这样还不够彻底,在没有Erlang的机器上面,最起码还得安装上一个CEAN才能启动这个应用,好在文档的《System Principles》中提供了一个target_system,使得生成应用的发行版本成为可能。
按照文档创建一个target_system.erl,windows下需要将:
- copy_file(filename:join([ErtsBinDir, "epmd"]),
- filename:join([TmpBinDir, "epmd"]), [preserve]),
- copy_file(filename:join([ErtsBinDir, "run_erl"]),
- filename:join([TmpBinDir, "run_erl"]), [preserve]),
- copy_file(filename:join([ErtsBinDir, "to_erl"]),
- filename:join([TmpBinDir, "to_erl"]), [preserve]),
改为
- copy_file(filename:join([ErtsBinDir, "epmd.exe"]),
- filename:join([TmpBinDir, "epmd.exe"]), [preserve]),
- copy_file(filename:join([ErtsBinDir, "start_erl.exe"]),
- filename:join([TmpBinDir, "start_erl.exe"]), [preserve]),
- copy_file(filename:join([ErtsBinDir, "werl.exe"]),
- filename:join([TmpBinDir, "werl.exe"]), [preserve]),
因为windows下的启动程序跟linux下有所不同。
然后运行:
- erl -pa ./ebin/
- Eshell V5.5.4 (abort with ^G)
- 1> target_system:create("echoline_rel").
- Reading file: "echoline_rel.rel" ...
- Creating file: "plain.rel" from "echoline_rel.rel" ...
- Making "plain.script" and "plain.boot" files ...
- Making "echoline_rel.script" and "echoline_rel.boot" files ...
- Creating tar file "echoline_rel.tar.gz" ...
- Creating directory "tmp" ...
- Extracting "echoline_rel.tar.gz" into directory "tmp" ...
- Deleting "erl" and "start" in directory "tmp/erts-5.5.4/bin" ...
- Creating temporary directory "tmp/bin" ...
- Copying file "plain.boot" to "tmp/bin/start.boot" ...
- Copying files "epmd", "run_erl" and "to_erl" from
- "tmp/erts-5.5.4/bin" to "tmp/bin" ...
- Creating "tmp/releases/start_erl.data" ...
- Recreating tar file "echoline_rel.tar.gz" from contents in directory "tmp" ...
- Removing directory "tmp" ...
- ok
它在根目录下生成了这些文件:
- echoline_rel.boot
- echoline_rel.script
- echoline_rel.tar.gz
- plain.boot
- plain.rel
- plain.script
将 echoline_rel.tar.gz 解压到某个目录下,比如 C:\echoline,就可以用
- C:\echoline>erts-5.5.4\bin\erl.exe -boot .\releases\1\start
来启动这个应用。
转载于:https://www.cnblogs.com/samis/archive/2011/05/28/2061239.html
[转]使用target_system进行erlang应用的发行相关推荐
- 在 Ubuntu 上安装最新版本的 Erlang方法介绍
Erlang 是一种用于构建大规模可扩展实时系统的函数式编程语言.Erlang 最初是由 爱立信 创建的专有软件,后来被开源. Erlang 在 Ubuntu 的 Universe 仓库 中可用.启用 ...
- erlang 架构原理_Erlang与Java内存架构
erlang 架构原理 我读了一篇关于Erlang VM的内存管理策略的非常非常有趣的文章. 它是Jesper Wilhelmsson撰写的论文 ,我认为讨论Erlang的内存设置和Oracle的Ja ...
- Erlang与Java内存架构
我读了一篇关于Erlang VM的内存管理策略的非常非常有趣的文章. 它是Jesper Wilhelmsson撰写的论文 ,我认为讨论Erlang的内存设置和Oracle的Java VM之间的差异可能 ...
- Erlang 二十年,如何在编程语言中占据一席之地?
1998 年开源发布的 Erlang 项目,在全球范围内只是个小众编程语言. 根据 TIOBE 最新发布的语言排行榜,Erlang 仅排名在第 65 位,市场份额占有小于 0.1%.但是作为一门函数编 ...
- Erlang开源20周年:这门编程语言见证了互联网的技术成长
Erlang于1998年12月8日星期二以开源的形式发布.你还记得那个星期你在哪里吗?我在达拉斯(德克萨斯州):我多次访问爱立信美国分公司,帮助他们建立了一个从事AXD301交换机研发的Erlang团 ...
- linux erlang版本,技术|如何在 Ubuntu Linux 上安装最新的 Erlang
Erlang 是一种用于构建大规模可扩展实时系统的函数式编程语言.Erlang 最初是由 爱立信 创建的专有软件,后来被开源. Erlang 在 Ubuntu 的 Universe 仓库 中可用.启用 ...
- Erlang 下载安装
Erlang 下载安装 下载Erlang 现在进入 erlang官网 , 点击页面顶部的 DOWNLOADS,选择指定发行版,然后根据操作系统下载不同的包. 如果是Linux就选择Download S ...
- Cowboy 用户指南 (二) - Erlang and the Web
Erlang 和 Web Erlang是编写Web应用程序的理想平台.它的特性完全符合现代Web应用程序的需求. Web是并发的 当你只访问一个网站时是几乎没有并发性的.打开几个连接,并通过这些连接发 ...
- CentOS 7.7安装Erlang和Elixir
安装之前,先看一下它们的简要说明 Erlang Erlang是一种开源编程语言,用于构建对高可用性有要求的大规模可扩展的软实时系统.它通常用于电信,银行,电子商务,计算机电话和即时消息中.Erlang ...
最新文章
- 图像质量评价,图片放大和缩小
- Microbiome:宏基因组分箱流程MetaWRAP分析实战和结果解读
- mongodb分享(二)
- 数据包编辑工具bittwiste
- Kubernetes使用Jenkins服务器存储所有的kube.config文件
- 通过SQL Server操作MySQL的步骤和方法
- Idea报错,但是项目可以正常启动运行
- C++手动开启O2优化(以及-O -O1 -O2 -O3优化的知识点)(竞赛可用)
- UI登录表单使用模板素材
- ROS学习笔记12(用Python写一个简单的消息发布和消息订阅)
- 幻灯片插入smartArt
- java计算机毕业设计宠物店管理系统源码+数据库+系统+lw文档+部署
- 数据库实验四 视图实验
- 佳能尼康宾得等,说说查看各大单反品牌的快门次数方法
- JAVA实现百度网盘文件上传
- Excel2016制作动态图表
- 计算机某浏览器设置主页地址,如何查看电脑中的浏览器主页是被什么软件修改的...
- DOS命令:bcdedit
- html中将scss转编译为css,SASS把scss转化为css的四种转化方式与命令
- Flask开发微电影网站(八)