Lua 的模块安装和部署工具 - LuaRocks

来源:互联网 发布:dnf一进去就网络中断 编辑:程序博客网 时间:2024/05/26 20:21

Lua 是一个短小精悍的脚本语言,很多功能官方都不内置支持,需要添加第三方模块库来支持。但是,这些第三方模块是由不同开发者制作,分散的放在不同地方,如果想要安装一个模块还要到处去找,况且下载完模块后,有时还需要手动编译,设置环境变量,把模块放到指定的 Lua 模块加载目录。反正,安装一个第三方 Lua 模块需要执行上述一连串操作,也是一个繁琐的过程。

对于这些繁琐,LuaRocks 可以简化以上安装 Lua 模块的操作。 LuaRocks 是 Lua 模块的安装和部署工具,类似于Ruby 的 gem,Python 的egg 和 Perl 的 cpan,它可以很方便的安装第三方 Lua 模块,而且你不需要关心模块之间的依赖关系,一条命令就可以很轻松地把模块安装部署好,省心,省力,不用去折腾安装 Lua 模块的细节。

安装 LuaRocks

喜闻乐见的是,Mac 下的 Homebrew 居然内置了 LuaRocks 的安装包(之前安装 Lua,用 "brew search lua" 搜 Lua 安装包时无意间发现),因此,在 Mac 下安装 LuaRocks 很简单,一条指令就行:

1
brew installluarocks -v

用 Homebrew 安装 LuaRocks 的版本是 luarocks-2.0.12,不过当前最新发布的版本是 luarocks-2.0.13,如果你想安装最新版,或者是非 Mac 用户,也可以源代码自定义安装 LuaRocks:

1
2
3
4
5
wget http://luarocks.org/releases/luarocks-2.0.13.tar.gz
cd luarocks-2.0.13
./configure--prefix=/usr/local/luarocks/--rocks-tree=/usr/local--sysconfdir=/usr/local/etc/luarocks
make
make install

"rocks-tree" 是指所要安装的 Lua 模块的默认安装目录,"sysconfdir" 是指 LuaRocks 的配置文件存放的地方,更多的安装设置参数可以查看这里。

如果是在 Win 下安装 LuaRocks,可以参考官方的这篇介绍 -- 《Installation instructions for Windows》

使用 LuaRocks

LuaRocks 也不是什么模块都能安装得到,它只汇集了一些比较出名的常用的第三方 Lua 模块。它有一个可安装的 Lua 模块列表,如果被安装的 Lua 模块在这个可安装列表里,那么就可以用 LuaRocks 来安装部署。

它的用法跟 Homebrew 差不多,例如想安装一个解析 JSON(JavaScript Object Notation) 的模块,可以用 search 参数先搜索一下有什么可安装的解析 JSON 的模块:

1
luarocks search json

假设想安装一个名为 json4lua 模块,可以用 install 参数来安装:

1
luarocks installjson4lua

上面指令执行完后,模块就安装好了。可以写个 JSON 字符串转 Lua table 的小例子来测试下模块是否安装成功

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
local json = require("json")
 
local json_str = '{"key1" : "val1", "key2" : "val2", "key3" : "val3"}'
local json_tab = json.decode(json_str)
for k, v in pairs(json_tab)do
    print(k, v)
end
--输出
--key1  val1
--key3  val3
--key2  val2
 
local tab = {a = "b", "c", 123, d =456}
io.write(json.encode(tab) .."\n")
--输出
--{"1":"c","2":123,"a":"b","d":456}

把上面代码保存在一个 lua 文件里执行,如果运行无错,有数据在终端里输出,则模块安装成功。

如果想查看 json4lua 模块的信息,可以调用 show 参数:

1
luarocks show json4lua

或者查看已安装模块的列表

1
luarocks list

如果想卸载 json4lua 这个模块,可以用 remove 参数来操作:

1
luarocks remove json4lua

更多的命令参数用法可以查看:

1
luarocks --help
0 0