Эрланг выпускает с Rebar: Что мне не хватает? - PullRequest
4 голосов
/ 09 августа 2011

Благодаря большой помощи здесь, я уже на пути к созданию моего первого релиза Erlang.Реального кода пока нет, но я хочу понять, как это делается.Я консультировался и следовал нескольким веб-учебникам, а также Martin et.al., но все еще, кажется, что-то упускает.

Когда я пытаюсь начать выпуск, я получаю:

lloyd@Reliance:~/Programming/Erlang/learn$ sh rel/learn/bin/learn start
[: 129: Node 'learn@127.0.0.1' not responding to pings.: unexpected operator

В каталоге проекта "learn" у меня есть:

apps  rebar  rebar.config  rel

В rebar.config у меня есть:

{cover_enabled, true}.
{sub_dirs, ["rel","apps/zzz", "apps/zzz_lib"]}.

В ... Learn / Apps, у меня есть:

zzz  zzz_lib

zzz и zzz_lib имеют все нужные вещив них, насколько я могу судить.Из lean я могу чистить, компилировать и создавать документы.

В ... / rel, у меня есть:

files  learn  reltool.config

См. Reltool.config ниже.

Мне не хватает волшебного соуса, но что?

Большое спасибо,

LRP

{sys, [
   {lib_dirs, []},
   {rel, "learn", "1",
    [
     kernel,
     stdlib,
     sasl
    ]},
   {rel, "start_clean", "",
    [
     kernel,
     stdlib
    ]},
   {boot_rel, "learn"},
   {profile, embedded},
   {excl_sys_filters, ["^bin/.*",
                       "^erts.*/bin/(dialyzer|typer)"]},
   {app, sasl, [{incl_cond, include}]}
  ]}.

{target_dir, "learn"}.

{overlay, [
       {mkdir, "log/sasl"},
       {copy, "files/erl", "{{erts_vsn}}/bin/erl"},
       {copy, "files/nodetool", "{{erts_vsn}}/bin/nodetool"},
       {copy, "files/learn", "bin/learn"},
       {copy, "files/app.config", "etc/app.config"},
       {copy, "files/vm.args", "etc/vm.args"}
       ]}.

1 Ответ

5 голосов
/ 08 ноября 2011

Похоже, в вашем файле retool.config отсутствуют некоторые записи для приложения, которое вы написали.

Первая часть должна выглядеть примерно так:

{sys, [
   {lib_dirs, ["../apps"]},      <--- point to where your applications are
   {rel, "learn", "1",
    [
     <your application here>     <---- add your application(s) here 
     kernel,
     stdlib,
     sasl
    ]},
   {rel, "start_clean", "",
    [
     kernel,
     stdlib
    ]},
   {boot_rel, "learn"},
   {profile, embedded},
   {excl_sys_filters, ["^bin/.*",
                       "^erts.*/bin/(dialyzer|typer)"]},
   {app, <your application here>, [{incl_cond, include}]},      <-- and here 
   {app, sasl, [{incl_cond, include}]}
  ]}.

Вот пример приложенияот Erlang и OTP в действии, которые я упаковал, используя арматуру.https://github.com/tmcgilchrist/simple_cache

Общая схема, которой я следую, выглядит следующим образом:

  simple_cache
          |-> apps  
          |    \-> simple_cache
          |             |-> src
          |             \-> ebin
          |
          |-> rebar.config
          |-> rel
               |-> files 
               |-> reltool.config
               \-> simple_cache

Кроме того, для выполнения

sh rel/learn/bin/learn start

используйте

sh rel/learn/bin/learn console

и введите

application: which_applications ().

В котором должен быть указан список вещей плюс ваше приложение.например,

[{mysample_app,[],[]},
 {sasl,"SASL  CXC 138 11","2.1.10"},
 {stdlib,"ERTS  CXC 138 10","1.17.5"},
 {kernel,"ERTS  CXC 138 10","2.14.5"}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...