luarocks 是否有收缩包装或锁定选项?

Does luarocks have a shrinkwrap or lockdown option?

其他包管理器有一个锁定选项。例如,在开发机器上,您可能有特定的包和特定的版本。目标是在暂存或生产环境中安装那些相同的包和版本。有时这称为收缩包装或锁定。

luarocks 有类似的东西吗?

从 LuaRocks 2.4.2 开始,很遗憾,这不能作为单个命令使用。

但这里是产生类似效果的一系列操作。

在开发机器中:

mkdir packages
cd packages
luarocks list --porcelain | awk '{print }' | uniq > packages.txt
for p in $(cat packages.txt); do luarocks pack $p; done
luarocks-admin make-manifest .
cd ..
tar czvpf packages.tar.gz packages

复制packages.tar.gz到目标机器然后运行:

tar zxvpf packages.tar.gz
luarocks --only-server=./packages install foo

这将安装软件包 "foo" 仅从 packages/ 目录(而非网络)中挑选依赖项和子依赖项,因此所有依赖项都保证是您打包在开发机器。