Lua 的模組安裝和部署工具
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 install
luarocks - 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 的配置檔案存放的地方,更多的安裝設定引數可以檢視這裡。
使用 LuaRocks
LuaRocks 也不是什麼模組都能安裝得到,它只彙集了一些比較出名的常用的第三方 Lua 模組。它有一個可安裝的
它的用法跟 Homebrew 差不多,例如想安裝一個解析 JSON(JavaScript Object Notation) 的模組,可以用 search 引數先搜尋一下有什麼可安裝的解析 JSON 的模組:
1 |
luarocks search json
|
假設想安裝一個名為 json4lua 模組,可以用 install 引數來安裝:
1 |
luarocks install
json4lua
|
上面指令執行完後,模組就安裝好了。可以寫個 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
|