Lua Rocks 設定

lua-users home
網路字典

一個 LuaRocks 設定範例,提供多組 Lua 安裝,並讓每組安裝從單一 LuaRocks 安裝獲得各自的 rock。

假設 /usr/local/bin/luarocks 是 luarocks-2.0.12 或更新版本,而 /usr/local/opt/lua/bin/lua 是 Lua 5.1.x,請建立預設 /usr/local/share/luarocks/config-5.1.lua (這是 Mountain Lion 上 Homebrew 的預設套件目錄,不過我在 Ubuntu 持續整合伺服器上也有一個非常相似的運作方式 — 毫無疑問,在 Windows 上也能使用批次檔 (BAT) 檔案完成類似的事情)

rocks_trees = { "/usr/local/lib/luarocks/5.1" }
variables = {
   LUA = "/usr/local/opt/lua/bin/lua5.1",
   LUA_BINDIR = "/usr/local/opt/lua/bin",
   LUA_INCDIR = "/usr/local/opt/lua/include",
   LUA_LIBDIR = "/usr/local/opt/lua/lib",
}

接著在 /usr/local/bin/luarocks5.1 建立一個包裝腳本

#!/bin/sh

PATH=/usr/local/opt/lua/bin:/usr/local/opt/luarocks/bin:$PATH
LUAROCKS_CONFIG=/usr/local/share/luarocks/config-5.1.lua
export LUAROCKS_CONFIG

lua5.1 `which luarocks` ${1+"$@"}
exit $?

同樣地,你需要在 /usr/local/bin/lua5.1 加入另一個包裝程式,以便設定路徑來尋找正確的 rock

#!/bin/sh

: ${LUA_PATH=";"}
: ${LUA_CPATH=";"}

PATH=/usr/local/opt/lua/bin:/usr/local/opt/luarocks/bin:$PATH
LUAROCKS_CONFIG=/usr/local/share/luarocks/config-5.1.lua
export LUAROCKS_CONFIG

# Set search paths to user environment settings, followed by system path, and finally rocks_trees.
save_LUA_PATH=$LUA_PATH
save_LUA_CPATH=$LUA_PATH
eval `luarocks path`
LUA_PATH="$save_LUA_PATH;$LUA_PATH"
LUA_CPATH="$save_LUA_CPATH;$LUA_CPATH"

exec lua5.1 ${1+"$@"}

/usr/local/opt/lua52/ 安裝 Lua 5.2.x 之後 (同樣地,這是 Mountain Lion 上 homebrew 的預設值),儘管 brew lua52 的某些路徑與 brew lua 衝突,但你必須手動執行連結,因此你將需要一個新的 /usr/local/share/luarocks/config-5.2.lua

rocks_trees = { "/usr/local/lib/luarocks/5.2" }
variables = {
   LUA = "/usr/local/opt/lua52/bin/lua",
   LUA_BINDIR = "/usr/local/opt/lua52/bin",
   LUA_INCDIR = "/usr/local/opt/lua52/include",
   LUA_LIBDIR = "/usr/local/opt/lua52/lib",
}

並在 /usr/local/bin/luarocks5.2 建立一個包裝腳本

#!/bin/sh

PATH=/usr/local/opt/lua52/bin:/usr/local/opt/luarocks/bin:$PATH
LUAROCKS_CONFIG=/usr/local/share/luarocks/config-5.2.lua
export LUAROCKS_CONFIG

exec lua5.2 `which luarocks` ${1+"$@"}

以及 /usr/local/bin/lua5.2 的另一個包裝腳本

#!/bin/sh

: ${LUA_PATH=";"}
: ${LUA_CPATH=";"}

PATH=/usr/local/opt/lua52/bin:/usr/local/opt/luarocks/bin:$PATH
LUAROCKS_CONFIG=/usr/local/share/luarocks/config-5.2.lua
export LUAROCKS_CONFIG

# Set search paths to user environment settings, followed by system path, and finally rocks_trees.
save_LUA_PATH=$LUA_PATH
save_LUA_CPATH=$LUA_PATH
eval `luarocks path`
LUA_PATH="$save_LUA_PATH;$LUA_PATH"
LUA_CPATH="$save_LUA_CPATH;$LUA_CPATH"

exec lua5.2 ${1+"$@"}

LuaRocks 2.0.12 也適用於 luajit-2.0,因此我使用 /usr/local/share/luarocks/config-luajit.lua 建立第三組設定,並且在 /usr/local/bin/luarocks-luajit/usr/local/bin/luajit 建立一對包裝程式。針對不同的作業系統進行調整 (例如 Ubuntu,它將套件安裝在 /usr/ 樹狀結構中) 只需要調整腳本和腳本中路徑的簡單動作即可。為了保險起見,我也建立了一個指向我偏好的預設解譯器的符號連結

$ ln -s lua5.2 /usr/local/bin/lua
$ ln -s luarocks5.2 /usr/local/bin/luarocks

現在,你可以透過選擇使用 luarocks5.1luarocks-luajit 等方式,安裝並對應的 LuaRocks 查詢樹狀結構,讓相關聯的 Lua 解譯器自動偵測。


最近的變更 · 喜好設定
編輯 · 歷史紀錄
最後編輯時間為 2013 年 6 月 28 日格林威治標準時間 上午 9:50 (比較)