Kong通过https://github.com/Mashape/kong-distributions这个项目发布安装包,打包工具使用的是https://github.com/jordansissel/fpm
核心代码在.build-package-script.sh里面,比较重要的问题是LuaRocks如何安装依赖,以及依赖安装在了哪里。关键代码在这里:
OUT=/tmp/build/out
MKTEMP_LUAROCKS_CONF="-t rocks_config.lua"
...
# Configure LuaRocks
rocks_config=$(mktemp $MKTEMP_LUAROCKS_CONF)
echo "
rocks_trees = {
{ name = [[system]], root = [[${OUT}/usr/local]] }
}
" > $rocks_config
export LUAROCKS_CONFIG=$rocks_config
export LUA_PATH=${OUT}/usr/local/share/lua/5.1/?.lua
...
$OUT/usr/local/bin/luarocks make kong-*.rockspec $LUAROCKS_PARAMS
根据LuaRocks官方文档,rocks_trees里的root属性就是依赖包的安装路径。luarocks make则是根据rockspec文件进行安装依赖包。