首页 文章

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

提问于
浏览
2

在我的项目中,我想使用mysql,所以我结帐这个https://github.com/dizzyd/erlang-mysql-driver . 我想知道如何安装应用程序,以便我的项目可以与之交互

2 回答

  • 4

    看看"rebar" - https://bitbucket.org/basho/rebar/wiki/Home

    它可用于安装依赖项,以及用于创建独立版本 .

    快速浏览一下你想要使用的erlang-mysql-driver,可以看出它还在使用rebar进行依赖管理 .

  • 3

    如果您已经开始布置您的应用程序(已经完成了一些编码)或者如果您是新手,螺纹钢可能会使事情变得复杂,但是,如果您的项目是erlang / OTP应用程序,那么我建议您首先根据推荐的文件系统如下:

    MyProject--/src
               /ebin
               /lib
               /include
               /priv
               /doc
               /examples
               /test
               /Emakefile
    

    Emakefile 是一个重要文件 . 它可能没有文件扩展名 . 它使BIF: make:all() 能够编译您指向的所有erlang源模块,并将所有.beam文件传输到您想要的目的地 . 例如:我希望编译 src 中的所有模块并将梁文件传输到 ebin ,我将此输入 Emakefile

    {"src/*", [debug_info, netload,strict_record_tests,warn_obsolete_guard,{outdir, "ebin"}]}.
    

    在这种情况下,我将启动erlang shell,其 pwd() 指向文件夹 MyProject ,以启用函数调用 make:all() 找到文件 Emakfile ,以便编译我的所有src文件 .

    现在,假设您有另一个OTP应用程序,您希望将其作为构建中的额外包 . 如果它像我向你展示的那样安排了OTP,并且还没有构建,即尚未制作,我的意思是只有它的src,它的文件夹ebin是空的,或者ebin可能已经包含了 .APP file . 然后将此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路径添加到您的节点代码路径中.sh脚本可能如下所示:

    #!/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 . 因此,当您对源代码进行更改时,即使在启动项目时,当您运行sh脚本时,终端路径指向文件夹: MyProject ,执行此操作:

    $pwd
    /export/home/your_user_name/MyProject
    $sh start_project.sh
    

    这将在您在脚本中输入的节点处启动项目,并将编译所有在关闭时更改的src文件 . 不仅如此,你可以在shell中调用: make:all() ,只要你对你的src代码进行cahnges . 然后你会在调用之后调用: l(some_module) ,以便erlang vm重新加载已编译模块的新目标代码 . 那么,您的整个项目现在将显示如下:

    MyProject--/src
               /ebin
               /lib/some_otp_app-1.0
               /include
               /priv
               /doc
               /examples
               /test
               /Emakefile
               /start_project.sh
    

    因此,如果用这个“some_otp_app-1.0”替换erlang驱动程序的mysql应用程序,一切都会好的 . 成功!

相关问题