日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[转]使用target_system进行erlang应用的发行

發布時間:2025/1/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转]使用target_system进行erlang应用的发行 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
[轉]使用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
  • 來啟動這個應用。

    posted on 2011-05-28 22:13 我的藍海 閱讀(...) 評論(...) 編輯 收藏

    轉載于:https://www.cnblogs.com/samis/archive/2011/05/28/2061239.html

    總結

    以上是生活随笔為你收集整理的[转]使用target_system进行erlang应用的发行的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。