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

如何在Erlang中安装应用程序?,erlang,Erlang,在我的项目中,我想使用mysql,所以我签出了这个。我想知道如何安装该应用程序,以便我的项目可以与之交互 它可用于安装依赖项和创建独立版本 快速查看您想要使用的erlang mysql驱动程序,可以发现它也在使用rebar进行依赖关系管理。如果您已经开始部署应用程序(已经完成了一些编码),或者如果您是新手,或者如果您的项目是erlang/OTP应用程序,然后,我建议您首先按照推荐的文件系统组织代码,如下所示: MyProject--/src /ebin

在我的项目中,我想使用mysql,所以我签出了这个。我想知道如何安装该应用程序,以便我的项目可以与之交互

它可用于安装依赖项和创建独立版本


快速查看您想要使用的erlang mysql驱动程序,可以发现它也在使用rebar进行依赖关系管理。

如果您已经开始部署应用程序(已经完成了一些编码),或者如果您是新手,或者如果您的项目是erlang/OTP应用程序,然后,我建议您首先按照推荐的文件系统组织代码,如下所示:

MyProject--/src /ebin /lib /include /priv /doc /examples /test /Emakefile MyProject--/src /ebin /lib/some_otp_app-1.0 /include /priv /doc /examples /test /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"}]}. #!/bin/bash erl \ -name my_node@my_domain \ -pa ./ebin ./lib/*/ebin ./include \ -mnesia dump_log_write_threshold 10000 \ -eval "make:all()" MyProject--/src /ebin /lib/some_otp_app-1.0 /include /priv /doc /examples /test /Emakefile /start_project.sh 在这种情况下,我将启动erlang shell,使其
pwd()
指向文件夹
MyProject
,以启用函数调用
make:all()
来查找文件
Emakfile
,从而编译我的所有src文件

现在,假设您有另一个OTP应用程序,您希望将其作为构建中的额外包。如果它像我向您展示的那样进行OTP安排,但尚未构建,即尚未制作,我的意思是,只有它的src和文件夹ebin为空,或者它的ebin可能已经包含
.APP文件
。然后将此OTP应用程序复制到
lib
文件夹中,使您的应用程序如下所示:

MyProject--/src /ebin /lib /include /priv /doc /examples /test /Emakefile MyProject--/src /ebin /lib/some_otp_app-1.0 /include /priv /doc /examples /test /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"}]}. #!/bin/bash erl \ -name my_node@my_domain \ -pa ./ebin ./lib/*/ebin ./include \ -mnesia dump_log_write_threshold 10000 \ -eval "make:all()" MyProject--/src /ebin /lib/some_otp_app-1.0 /include /priv /doc /examples /test /Emakefile /start_project.sh 在文件夹
MyProject
中,您可以放置一个shell脚本,该脚本将启动您的项目,并将所有相关的ebin路径添加到节点代码路径中。sh脚本可能如下所示:

MyProject--/src /ebin /lib /include /priv /doc /examples /test /Emakefile MyProject--/src /ebin /lib/some_otp_app-1.0 /include /priv /doc /examples /test /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"}]}. #!/bin/bash erl \ -name my_node@my_domain \ -pa ./ebin ./lib/*/ebin ./include \ -mnesia dump_log_write_threshold 10000 \ -eval "make:all()" MyProject--/src /ebin /lib/some_otp_app-1.0 /include /priv /doc /examples /test /Emakefile /start_project.sh 这将在脚本中输入的节点上启动项目,并编译关闭时更改的所有src文件。不仅如此,每当对src代码进行标记时,您还可以在shell中调用:
make:all()
。然后,在生成后调用:
l(some_module)
,以便erlang vm重新加载已编译模块的新目标代码。 因此,您的整个项目现在将如下所示:

MyProject--/src /ebin /lib /include /priv /doc /examples /test /Emakefile MyProject--/src /ebin /lib/some_otp_app-1.0 /include /priv /doc /examples /test /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"}]}. #!/bin/bash erl \ -name my_node@my_domain \ -pa ./ebin ./lib/*/ebin ./include \ -mnesia dump_log_write_threshold 10000 \ -eval "make:all()" MyProject--/src /ebin /lib/some_otp_app-1.0 /include /priv /doc /examples /test /Emakefile /start_project.sh MyProject--/src /息税前利润 /lib/some_otp_app-1.0 /包括 /普里夫 /医生 /例子 /试验 /电子档案 /start_project.sh 因此,如果您用这个“some_otp_app-1.0”替换mysql应用程序的erlang驱动程序,一切都会很好。成功