我尝试使用它对ERL_LIBS环境变量的所有依赖项来设置ChicagoBoss。我得到了ChicagoBoss,并用./rebar get-deps && ./rebar compile编译了它,现在我在/home/user/ChicagoBoss目录中有ChicagoBoss,在/home/user/ChicagoBoss/deps目录中有它的依赖项。我想把它添加到ERL_LIBS中。我在我的.bashrc文件中放入以下行:
export ERL_LIBS=/home/user/ChicagoBoss/:/home/user/*/deps/*/
但是当我尝试使用ChicagoBoss依赖项,例如ranch应用程序时,可以使用:
application:start(ranch).
我收到错误:
{error,{"no such file or directory","ranch.app"}}谢谢。
发布于 2013-04-10 16:19:53
ERL_LIBS环境变量没有通配符的概念。当您使用像-pa deps/*/ebin这样的参数启动erl时,您的shell将扩展通配符。您需要手动添加每个库路径(应用程序的路径,而不是其ebin目录!)敬ERL_LIBS。
为了简化这个过程,我们可以使用Python:
import glob
print ':'.join(glob.glob('/home/user/*/deps/*/'))发布于 2013-08-20 00:08:45
我在一个简单的应用程序中遇到了相同的错误。原来,在主应用程序目录中缺少一个'dep‘目录: ranch安装在那里。我不知道为什么在我的情况下它会丢失,但我通过从另一个工作的牧场应用程序复制该目录解决了它。
编辑:有趣的是,我收到一条编译消息:"Dependency not available: ranch-.* ({git,"git://github.com/extend/ranch.git","master"})“,这一定是关于缺少'dep‘顶级目录的警告。
发布于 2013-11-02 19:27:59
ERL_LIBS可以简单地指向所有依赖项项目所在的父目录。如果您的项目遵循Erlang Project目录约定(您的Project/src、您的Project/ ebin、您的Project/ include ),那么Erlang将动态地将这些项目中的ebin和include关联到您的上下文。
示例
/place/Project1
/place/Project1/ebin/...
/place/Project1/include/...
/place/Project1/deps/...
/place/Project1/deps/DependencyProject2...
/place/Project1/deps/DependencyProject3...从上面可以看出,/place/Project1/deps是其他子项目(依赖项)的容器。在这种情况下,如果您可以像下面这样运行应用程序
erl env ERL_LIBS "/place:/place/Project1/deps“。这将包括运行时上下文中的所有相关项目( Project1、DependencyProject2和DependencyProject3 )。
https://stackoverflow.com/questions/15905653
复制相似问题