问题标签 [reltool]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
981 浏览

erlang - Reltool 错误“可能包含在两个不同的应用程序中”

我想知道reltool以下行为背后的原因是什么:

如果我reltool.config使用默认值mod_condincl_cond选项,并且我包含的应用程序之一有一个模块,该模块也恰好是我的机器上安装的某些应用程序的一部分,但未包含在我的版本中,则 reltool:get_target_spec/1返回:

{error, "Module <some_module> potentially included by two different applications: <system_app> and <my_app>."}

这很烦人,因为<system_app>它不是我发布的一部分(直接或间接)。reltool 真的不能确定<system_app>不会包含在我的版本中吗?这就是它的原因"potentially included"吗?

无论如何,为了生成我的版本,我必须明确排除哪个是丑陋<system_app>{app, <system_app> [{incl_cond, exclude}]},因为它<system_app>恰好安装在root_dir我进行构建的机器的 Erlang/OTP 系统中(它可能没有安装在其他构建机器)并且与我的发布无关。实际示例:tsung-1.4.3包含mochijson2模块,因此我在构建自己的版本时遇到问题,该版本应mochiweb在已tsung安装的机器上包含应用程序(但不在其他机器上)。另一种选择是将顶级incl_cond从更改{incl_cond, derived}{incl_cond, exclude}然后手动包含所有我想成为我发布的一部分的应用程序,它更好(可以在任何构建机器上工作)但仍然不是很好,因为它必须手动完成(我想依靠 relltool 来找出依赖关系) .

那么问题来了,为什么我们会出现这样的情况?为什么仅仅在构建机器上存在一些应用程序就会导致上述reltool错误?

PS 作为旁注,我相信当前版本的reltool_server.erl的第 907-909 行包含一个错误:它会bad argument在被调用时生成。

0 投票
2 回答
211 浏览

erlang - Reltool 尝试启动库

我正在使用 Reltool 构建一个版本。当我尝试使用引导文件启动它时,出现错误:

但是 z_validate 是一个库,我不想启动它。如何从引导脚本中排除它?

0 投票
1 回答
241 浏览

erlang - 如何以不同的名称启动钢筋应用程序两次或更多次?

我有一个名为 pingpong 的钢筋应用程序。在rebar generate我使用./rel/pingpong/bin/pingpong start. 问题是 erlang VM 始终具有名称-name pingpong@127.0.0.1,但我想要的是使用 name 启动应用程序一次,ping@127.0.0.1然后再次使用 name启动应用程序pong@127.0.0.1

我知道名称保留在 ./rel/pingpong/releases/VSN/vm.config 但我不想在启动应用程序之前手动编辑文件。我想要类似的东西pingpong start -name=ping。有没有办法做到这一点?

0 投票
3 回答
5191 浏览

erlang - rebar:缺少应用程序目录

我正在测试钢筋

  • 视窗 8 64Bis
  • 二郎 64 位 R15B02

我从 github 代码编译 rebar 并创建了一个基本应用程序

我正在阅读 reltool 文档,但我找不到有关应用程序目录的任何信息,唯一相关的选项是incl_cond,但默认情况下由rebar命令定义

src/testapp.app.src

相对/reltool.config

0 投票
2 回答
395 浏览

erlang - rabbitmq-erlang-client,使用 rebar 友好的 pkg,在 dev env 上工作在 rebar 发布时失败

我成功地将rabbitmq-erlang-client的rebar-friendly包用于一个简单的Hello World rebarized和OTP“兼容”应用程序,并且在开发环境中一切正常。我能够启动一个 erl 控制台并执行我的操作application:start(helloworld).并连接到代理,打开一个通道并与队列通信。

但是,然后我继续做rebar generate,它构建了版本就好了,但是当我尝试从自包含的版本包中启动时,事情突然爆炸了。

我知道钢筋发布是一种晦涩难懂的艺术,但我想知道就使用 rabbitmq-erlang-client 部署应用程序而言,我有哪些选择。

您将在下面找到崩溃时控制台的输出:

编辑:根据评论中的要求。

reltool.config

0 投票
1 回答
435 浏览

erlang - systools.make_tar 在 .ez 存档中找不到 .app 文件

我正在使用reltool. 输出文件夹rel/lib包含所有应用程序及其ebin文件夹打包到.ez档案中,例如crypto

我从erl文件rel夹开始。文件夹的路径ebin位于代码路径中,即code:get_path().在其他中返回(对于lib文件夹中的其他应用程序也是如此):

但是当试图调用systools:make_tar("releases/0.1/project").它时抱怨它找不到.app文件(对于发布中提到的所有应用程序):

我看到.app文件在存档中,只是systools由于某种原因看不到它。我尝试在使用该选项ebin调用时指定文件夹,但它似乎不起作用(缺少相同的错误)。还:make_tarpathcrypto.app

给我:{error,enotdir}

也许systools还没有处理档案?有没有其他方法可以从使用的版本创建 tar 存档reltool?任何帮助将不胜感激。

0 投票
0 回答
132 浏览

erlang - 如何使用 rebar 在多个应用程序中共享库?

我有一个这样的项目结构:

我想分发game_serverand login_servergame_server取决于common_lib_1and common_lib_2login_server取决于common_lib_1and common_lib_3

如果rebar create-node nodeid=xxxrel/game_serverand中执行rel/login_server,当我使用创建分发时rebar generate,会生成许多重复的文件。

我想用这样一个干净的结构来分发它们:

我希望所有应用程序共享库,它们有自己的启动脚本、vm 和 sys 配置。

如何编写一个干净的 reltool.config 来做到这一点?

0 投票
1 回答
824 浏览

erlang - Erlang:rebar生成的包启动失败

每个人。

我有一个打包的erlang应用程序rebar generate

这是我的 reltool.config:

编译和打包时一切顺利:

但是当我运行该应用程序时,它无法启动:

./bin/collector console

错误输出:

内核 pid 终止 (application_controller) ({application_start_failure,lager,{bad_return,{{lager_app,start,[normal,[]]},{'EXIT',{undef,[{erl_syntax,atom,[module],[]} ,{glc_code,abstract_module_,2

似乎主要原因是{'EXIT',{undef,[{erl_syntax,atom,[module],[]} 但我不知道为什么它未定义(我可以在控制台中手动使用它)或如何解决它。

顺便说一句,我使用 Erlang R16B02。

任何人都可以帮助我吗?谢谢。

0 投票
2 回答
4106 浏览

erlang - Elixir 与 Mix 如何制作守护进程?

Elixir & Mix 都想把服务器做成一个守护进程。一直没能找到正确的方法。

另外,我想使用erlang reltool。

0 投票
1 回答
1225 浏览

erlang - 为什么我的 Erlang shell 不加载 rebar 依赖项?

我有一个使用 rebar 和这个配置的简单项目:

我的目录结构是:

(对墙感到抱歉)每个依赖项的 ebin 文件夹中都有一个 .app 文件,我正在运行 command erl -pa apps/*/ebin -pa ebin -pa deps/*/ebin。我希望我应该能够application:ensure_all_started(somedep).在“somedep”是依赖项的名称的地方运行,并且在它的 ebin 文件夹中定义了一个 .app。但是当我为其中任何一个运行它时,我得到了错误{error,{somedep,{"no such file or directory","somedep.app"}}}。当我为自己的应用程序运行它时,我得到了正确的响应({ok,_})。因为我无法启动依赖项的应用程序,所以我自己的应用程序失败并出现undef错误。我是否错过了向 shell 注册我的 .app 文件的步骤?