4

在 NodeJS/NPM 中,您可以创建package.json并运行npm install以将所有依赖项安装在项目内的文件夹中:./node_modules. (一个项目可以是一个应用程序或另一个模块/包。)

Ruby 还有一个“捆绑器”系统(使用 .bundle 文件)来跟踪特定于目录(即项目)的 gem。

LuaRocks 有类似的约定吗?还是建议将所有内容安装到/usror $HOME

到目前为止,我已经能够获得类似的功能,但我必须创建一个自定义的 LuaRocks 配置文件并指定--tree=my_local_lua_rocks_dir每次我想安装岩石的时间。当然,我总是可以创建一个 bash 脚本。关键是我似乎违反了约定。

4

2 回答 2

5

--tree可以使用以下标志将 Rocks 安装到当前目录下的目录中:

luarocks install --tree ./lua_modules lpeg

然后你必须在 Lua中配置你的package.path和变量(通过和环境变量设置),以便它找到安装在其中的模块。有几种方法可以方便地做到这一点:本教程解释了如何做到这一点,并附有更多示例package.cpathLUA_PATHLUA_CPATH

于 2013-08-09T20:03:48.040 回答
1

而不是使用Vert,我决定只编辑 LuaRocks 配置文件:

  1. /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

  2. 然后在你的.bashrc

    eval `luarocks path`
    export PATH=$PATH:my_dir/bin
    
  3. 但是,对于某些命令,您现在必须指定树,否则会给您带来令人困惑的错误:

    luarocks make --tree=my_dir
    
于 2013-08-10T07:33:30.273 回答