Lua Rocks 配置 |
|
假设 /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 添加另一个包装器来设置路径以查找正确的 rocks
#!/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+"$@"}
在将 Lua 5.2.x 安装到 /usr/local/opt/lua52/ 之后(同样,这是 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/ 树中)只是调整脚本的 PATH 和脚本本身的问题。为了确保万无一失,我还为我首选的默认解释器创建了软链接
$ ln -s lua5.2 /usr/local/bin/lua $ ln -s luarocks5.2 /usr/local/bin/luarocks
此时,您可以通过选择使用 luarocks5.1 或 luarocks-luajit 等,将软件包安装到相应的 LuaRocks 树中,以便与关联的 Lua 解释器自动发现。