为什么relx没有生成发布?

时间:2013-11-03 12:25:22

标签: erlang rebar relx

我的relx配置

{release,{socket,"0.1.0"}}.
{extend_start_script,true}.

我的.app文件

{application,socket,
         [{description,[]},
          {vsn,"1"},
          {registered,[]},
          {applications,[kernel,stdlib,cowboy]},
          {mod,{socket,[]}},
          {env,[{http_port,8080}]},
          {modules,[socket_app,socket_socket_handler,socket_sup]}]}.

使用rebar编译应用程序后,我从终端运行relx,以下是我得到的输出

  

===>启动relx构建过程......

     

===>从目录中解析OTP应用程序:

    /home/akshat/Desktop/socket/ebin

   /home/akshat/Desktop/socket/deps

  /usr/lib/erlang/lib
     

===>缺少梁文件hipe<<“/ usr / lib / erlang / lib / hipe-3.10.2 / ebin / hipe.beam”>>

     

===>从目录中解析可用的OTP版本:

     /home/akshat/Desktop/socket/ebin

     /home/akshat/Desktop/socket/deps

     /usr/lib/erlang/lib
     

系统中未指定任何版本!

我不明白来自relx的这条消息。它不会为我创建发布吗?

如何安装hipe?

更新

在重新安装erlang后,我不再收到hipe错误消息。但是螺纹钢仍然说系统没有指定任何版本。

2 个答案:

答案 0 :(得分:2)

有这个工作。重新安装erlang摆脱了第一个问题,即hipe错误消息。

表示relx的含义
  

系统未指定任何版本

是我没有指定要发布的应用程序。我的理解是,因为我只有一个应用程序,所以我不需要明确指定它。所以我的relx.config文件现在看起来像

{release,{socket,"0.1.0"},[socket]}.
{extend_start_script,true}.

这有效,我现在在我的_rel文件夹中有一个版本。

答案 1 :(得分:2)

在进入应用程序目录并运行rebar3编译,rebar3发行命令之前,我遇到了完全相同的问题。效果很好。

$ > ls
enter code here
chatx   rebar3
$ > cd chatx/
$ > rebar3 compile
    ===> Verifying dependencies...
    ===> Compiling chatx
$ > rebar3 release
    ===> Verifying dependencies...
    ===> Compiling chatx
    ===> Starting relx build process ...
    ===> Resolving OTP Applications from directories:

      /Users/studio/erlang/chatx/_build/default/lib
      /Users/studio/erlang/chatx/apps
      /Users/studio/kerl/20.2/lib

    ===> Resolved chatx-0.1.0
    ===> Dev mode enabled, release will be symlinked
    ===> release successfully created!