启动erlang应用程序(relx)时发生错误

时间:2014-10-10 13:19:08

标签: erlang release relx

当我尝试启动由relx准备的erlang版本时,它崩溃了原因:

{"init terminating in do_boot",{badarg,[{erl_prim_loader,check_file_result,3,[]},{init,get_boot,1,[]},{init,get_boot,2,[]},{init,do_boot,3,[]}]}}

目录列表:

    ├── bin
    ├── lib
    │   ├── asn1-2.0.2
    │   │   ├── ebin
    │   │   ├── priv
    │   │   └── src
    │   ├── bear-0.8.1
    │   │   ├── ebin
    │   │   └── src
    │   ├── cache-1.0.0
    │   │   ├── ebin
    │   │   ├── priv
    │   │   └── src
    │   ├── cberl-1
    │   │   ├── c_src
    │   │   ├── ebin
    │   │   ├── include
    │   │   ├── priv
    │   │   └── src
    │   ├── compiler-4.9.2
    │   │   ├── ebin
    │   │   └── src
    │   ├── cowboy-0.8.6
    │   │   ├── ebin
    │   │   └── src
....................
    │   ├── crypto-3.0
    │   │   ├── ebin
    │   │   ├── priv
    │   │   │   └── lib
    │   │   └── src
    └── releases
        └── 0.5.2

它上面的所有图书馆都有自己的位置。

我尝试使用命令erl -env ERL_LIBS ../libs -erlconto启动应用程序并成功启动。

看来,启动文件中的问题,但我不知道如何解决这个问题。

请提供任何提示或解决方法。

TNX!

2 个答案:

答案 0 :(得分:2)

我添加了

{extended_start_script, true}.

到relx.conf一个应用程序现在正常工作!

TNX。

答案 1 :(得分:0)

当OTP应用程序的.app文件缺少必需的依赖项时,通常会发生这种情况。 relx使用.app的内容来解析依赖关系以进入发布。

确保您的所有发布应用程序至少包含kernel stdlib applications元组中的.app.app

以下是一个示例kernel文件,其中列出了stdlibelk{application, prop, [ {description, "Prop Template Generator"}, {vsn, "0.0.1"}, {registered, []}, {applications, [kernel, stdlib, elk]}, {modules, [prop, prop_otp, prop_generator]}, {env, []} ]}. 作为依赖项:

{{1}}