在NodeJS / NPM中,您可以创建package.json
并运行npm install
以将所有依赖项安装到项目的文件夹中:./node_modules
。 (项目可以是应用程序或其他模块/包。)
Ruby还有一个“捆绑”系统(使用.bundle文件),可以跟踪特定于目录(即项目)的宝石。
LuaRocks有类似的约定吗?或者是否建议将所有内容安装到/usr
或$HOME
?
到目前为止,我已经能够获得类似的功能,但我必须创建一个自定义的LuaRocks配置文件,并在每次要安装摇滚时指定--tree=my_local_lua_rocks_dir
。当然,我总是可以创建一个bash脚本。关键是我似乎违背了惯例。
答案 0 :(得分:5)
可以使用--tree
标志将岩石安装到当前目录下的目录中:
luarocks install --tree ./lua_modules lpeg
然后您必须在Lua中配置package.path
和package.cpath
变量(可通过LUA_PATH
和LUA_CPATH
环境变量设置),以便找到安装在其中的模块。有几种方法可以方便地执行此操作:tutorial explains how to do it, with more examples。
答案 1 :(得分:1)
我没有使用Vert,而是决定只编辑LuaRocks配置文件:
在/etc/luarocks/config.lua
:
rocks_servers = {
[[http://rocks.moonscript.org/]],
[[http://luarocks.org/repositories/rocks]]
}
rocks_trees = {
[[/usr/local]],
[[./my_dir]]
}
./my_dir
相对于您所在的pwd
,而不是相对于配置文件的位置。当然,将my_dir
更改为您想要的任何内容。
“rock_trees
的顺序很重要:当安装岩石时,LuaRocks会尝试从列表底部开始选择存储岩石的位置;在运行时加载岩石时,LuaRocks会从顶部扫描清单“。 来自:http://luarocks.org/en/Config_file_format
然后在.bashrc
:
eval `luarocks path`
export PATH=$PATH:my_dir/bin
但是,对于某些命令,您现在必须指定树,否则会出现令人困惑的错误:
luarocks make --tree=my_dir