如何在Erlang中安装应用程序?

3
2个回答

4
请看 "rebar" - https://bitbucket.org/basho/rebar/wiki/Home 它可以用于安装依赖项和创建独立的发布版本。
快速查看您想使用的 erlang-mysql-driver,发现它也使用 rebar 进行依赖管理。

4
Rebar可能会使您的应用程序布局变得复杂(如果您已经开始布置您的应用程序(已经编写了一些代码)),或者如果您是新手。但是,如果您的项目是一个Erlang/OTP应用程序,那么我建议您首先根据推荐的文件系统组织您的代码,如下所示:
MyProject--/src /ebin /lib /include /priv /doc /examples /test /Emakefile Emakefile是一个重要的文件。它可能没有文件扩展名。它启用BIF:make:all()编译您指向的所有Erlang源模块并将所有的.beam文件传输到您想要的目标。
例如:如果我想要编译src中的所有模块并将beam文件传输到ebin中,则将其输入到Emakefile中:
{"src/*", [debug_info, netload,strict_record_tests,warn_obsolete_guard,{outdir, "ebin"}]}.
在这种情况下,我将以erlang shell启动,并将其pwd()指向文件夹MyProject,以便使函数调用make:all()找到文件Emakfile以编译所有我的源文件。
现在,假设您有另一个OTP应用程序,您希望将其作为额外的软件包添加到构建中。如果它像我向您展示的那样以OTP方式排列,并且尚未构建,即只有它的src和文件夹ebin为空或者它的ebin可能已经包含一个.APP文件。然后,将此OTP应用程序复制到您的lib文件夹中,使您的应用程序看起来像这样:
MyProject--/src /ebin /lib/some_otp_app-1.0 /include /priv /doc /examples /test /Emakefile 然后,我们将更改我们的Emakefile如下:
{"src/*", [debug_info, netload,strict_record_tests,warn_obsolete_guard,{outdir, "ebin"}]}. {"lib/some_otp_app-1.0/src/*", [debug_info, netload,strict_record_tests,warn_obsolete_guard,{outdir, "lib/some_otp_app-1.0/ebin"}]}.
在文件夹MyProject中,您可以放置一个shell脚本,该脚本将启动您的项目并将所有相关的ebin路径添加到节点代码路径中。 shell脚本可能如下所示:
#!/bin/bash erl \ -name my_node@my_domain \ -pa ./ebin ./lib/*/ebin ./include \ -mnesia dump_log_write_threshold 10000 \ -eval "make:all()"
您可以将此文件保存为start_project.sh。因此,随着您对源代码进行更改,即使在启动项目时,当您使用终端路径指向文件夹:MyProject运行sh脚本时,您会这样做:
$pwd
/export/home/your_user_name/MyProject
$sh start_project.sh
这将在您输入脚本的节点处启动项目,并编译所有在其关闭时更改的src文件。不仅如此,每当您对src代码进行更改时,您还可以在shell中调用make:all(),然后再进行调用:l(some_module),以便erlang虚拟机重新加载已编译模块的新对象代码。
因此,您的整个项目现在看起来像这样:
MyProject--/src
           /ebin
           /lib/some_otp_app-1.0
           /include
           /priv
           /doc
           /examples
           /test
           /Emakefile
           /start_project.sh
因此,如果您将erlang驱动程序替换为mysql应用程序与此"some_otp_app-1.0",一切都会很好。成功!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接