繁体   English   中英

无法使用钢筋生成epgsql开始发布

[英]Could not start release with rebar generate epgsql

当我使用钢筋生成发布应用程序并尝试通过键盘控制台启动它时,出现错误

{“初始化在do_boot中终止”,{'无法加载',pgsql,get_file}}。

在所有文件app.src和reltool.config中,我都添加了epgsql应用程序。

app.src:

{application, leasing,
 [
  {description, ""},
  {vsn, "1"},
  {registered, []},
  {applications, [
              kernel,
              stdlib,
              crypto,
              ssl,
              public_key,
              epgsql,
              amqp_client,
              rabbit_common
            ]},
{mod, { leasing_app, []}},
{env, []}
]}.

reltool.config

{sys, [
   {lib_dirs, ["../deps", "../apps"]},
   {erts, [{mod_cond, derived}, {app_file, strip}]},
   {app_file, strip},
   {rel, "leasingnode", "1",
    [
     kernel,
     stdlib,
     sasl,
     crypto,
     ssl,
     public_key,
     epgsql,
     amqp_client,
     rabbit_common,
     leasing
    ]},
   {rel, "start_clean", "",
    [
     kernel,
     stdlib
    ]},
   {boot_rel, "leasingnode"},
   {profile, embedded},
   {incl_cond, exclude},
   {excl_archive_filters, [".*"]}, %% Do not archive built libs
   {excl_sys_filters, ["^bin/.*", "^erts.*/bin/(dialyzer|typer)",
                       "^erts.*/(doc|info|include|lib|man|src)"]},
   {excl_app_filters, ["\.gitignore"]},
   {app, sasl,   [{incl_cond, include}]},
   {app, stdlib, [{incl_cond, include}]},
   {app, kernel, [{incl_cond, include}]},
   {app, crypto, [{incl_cond, include}]},
   {app, ssl, [{incl_cond, include}]},
   {app, public_key, [{incl_cond, include}]},
   {app, epgsql, [{incl_cond, include}]},
   {app, amqp_client, [{incl_cond, include}]},
   {app, rabbit_common, [{incl_cond, include}]},
   {app, leasing, [{incl_cond, include}]}

  ]}.

{target_dir, "leasingnode"}.

{overlay, [
       {mkdir, "log/sasl"},
       {copy, "files/erl", "\{\{erts_vsn\}\}/bin/erl"},
       {copy, "files/nodetool", "\{\{erts_vsn\}\}/bin/nodetool"},
       {copy, "files/leasingnode", "bin/leasingnode"},
       {copy, "files/leasingnode.cmd", "bin/leasingnode.cmd"},
       {copy, "files/start_erl.cmd", "bin/start_erl.cmd"},
       {copy, "files/install_upgrade.escript", "bin/install_upgrade.escript"},
       {copy, "files/sys.config", "releases/\{\{rel_vsn\}\}/sys.config"},
       {copy, "files/vm.args", "releases/\{\{rel_vsn\}\}/vm.args"}
      ]}.

当我从erl shell启动它时一切正常,但是当我生成发行版时,我出错了。 当我关闭epgsql应用程序时,启动正常,我看到所有应用程序(加密,ssl,public_key都已加载),但是如果再次添加epgsql,则会出错。

我究竟做错了什么?

我本人也在同一个问题上挣扎。 我发现,即使我将epgsql依赖项放入应用程序文件中,但未在代码中使用其任何模块,但epgsql应用程序也不包含在发行版中。 事实证明这不是钢筋的问题。 引擎盖下的钢筋使用reltool。 这是一个reltool,实际上生成了发行版,在我看来,它使用了来自束文件的某些信息,并且本身剥离了未使用的应用程序。

因此,要解决此问题,我想出了两种方法:

  • 一种。 在代码中使用任何epgsql的模块,甚至pgsql:yyy()也可以:)
  • b。 将{app,epgsql,[{incl_cond,include}]}添加到reltool.config中。

实际上,这是一个普遍的问题,并且与epgsql无关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM