Lua:善用luarocks管理公共库

本文分享自天翼云开发者社区《Lua善用luarocks管理公共库》.作者:王****淋

什么是Luarocks

Luarocks是一个Lua包管理器,基于 Lua 语言开发,提供一个命令行的方式来管理 Lua 包依赖、安装第三方 Lua 包等,社区比较流行的包管理器之一

Python具有PIP,Ruby具有Gems,Java具有Maven,Node具有npm,Lua具有Luarocks。

前要:先看Lua的require

以openresty中的Luajit/usr/local/openresty/luajit/bin/luajit为例:

测试代码:

lua 复制代码
local cjson = require "cjson"
local s = cjson.encode({"test", "lua", "package"}) print(s) 

执行结果:

swift 复制代码
/usr/local/openresty/luajit/bin/luajit: test.lua:3: module 'cjson' not found:
        no field package.preload['cjson'] no file './cjson.lua' no file '/usr/local/openresty/luajit/share/luajit-2.1.0-beta3/cjson.lua' no file '/usr/local/share/lua/5.1/cjson.lua' no file '/usr/local/share/lua/5.1/cjson/init.lua' no file '/usr/local/openresty/luajit/share/lua/5.1/cjson.lua' no file '/usr/local/openresty/luajit/share/lua/5.1/cjson/init.lua' no file './cjson.so' no file '/usr/local/lib/lua/5.1/cjson.so' no file '/usr/local/openresty/luajit/lib/lua/5.1/cjson.so' no file '/usr/local/lib/lua/5.1/loadall.so' stack traceback: [C]: in function 'require' test.lua:3: in main chunk [C]: at 0x004055d0 

从测试结果可以看到,require有几个搜索目录,理论上任意目录都可以

Luarocks包管理

我们软件开发过程中会引入大量库。如果简单把所有库都放入代码仓,那会造成大量的混乱。因此,更适合的办法是,使用luarocks包管理工具,将库安装到库目录。

示例:luarocks 安装 cjson

以openresty中的Luajit/usr/local/openresty/luajit/bin/luajit为例:

/usr/local/openresty/luajit/bin/luarocks install lua-cjson

apache 复制代码
Installing /luarocks.org/lua-cjson-2.1.0.10-1.src.rock

lua-cjson 2.1.0.10-1 depends on lua >= 5.1 (5.1-1 provided by VM) gcc -O2 -fPIC -I/usr/local/openresty/luajit/include/luajit-2.1 -c lua_cjson.c -o lua_cjson.o gcc -O2 -fPIC -I/usr/local/openresty/luajit/include/luajit-2.1 -c strbuf.c -o strbuf.o gcc -O2 -fPIC -I/usr/local/openresty/luajit/include/luajit-2.1 -c fpconv.c -o fpconv.o gcc -shared -o cjson.so lua_cjson.o strbuf.o fpconv.o No existing manifest. Attempting to rebuild... lua-cjson 2.1.0.10-1 is now installed in /usr/local/openresty/luajit (license: MIT) 
sh 复制代码
# find /usr/local/openresty/luajit -name cjson.so 
/usr/local/openresty/luajit/lib/lua/5.1/cjson.so

luarocks 安装nettle

sh 复制代码
# find /usr/local/openresty/luajit -name *nettle*
/usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-nettle
/usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-nettle/2.1-1/lua-resty-nettle-2.1-1.rockspec
/usr/local/openresty/luajit/share/lua/5.1/resty/nettle
/usr/local/openresty/luajit/share/lua/5.1/resty/nettle/types/nettle-types.lua
/usr/local/openresty/luajit/share/lua/5.1/resty/nettle.lua
相关推荐
Patrick_Wilson12 天前
从一次 Safari 白屏,聊聊 CDN 外置 React 的坑与前端监控盲区
前端·react.js·cdn
姚不倒14 天前
从 A 记录到 CDN 切换:我的 DNS 认知跃迁之路
运维·cdn·dns
字节跳动视频云技术团队18 天前
AI Agent 会自己选 CDN 了:当网站访问者从 “人” 扩展到 “AI”,内容分发已升级
人工智能·cdn
Linsk18 天前
2026年了,请停止相信“公共 CDN 能提升性能”
前端·jquery·cdn
锐速网络1 个月前
游戏加速、DNS加速、CDN网络加速三者选型指南
cdn·网络优化·网络运维·游戏加速·dns加速·运维选型·长连接加速
锐速网络1 个月前
CDN视频加速集群部署与性能调优
cdn·网络优化·视频加速·流媒体加速·直播cdn·cdn集群部署·锐速安全
mCell2 个月前
别急着骂运营商,你家路由器里可能藏着一台 PCDN 盒子
前端·http·cdn
云安全干货局2 个月前
怎么选择靠谱的CDN服务品牌?主流品牌性能对比及加速效果解析
cdn·安全加速·云加速·业务加速·edge scdn
SEO_juper2 个月前
CDN 地域节点优化:匹配 GEO 信号,提升加载速度
服务器·ai·php·seo·cdn·geo·谷歌优化
Love Song残响2 个月前
PowerSetting下载慢?CDN加速 + 离线包分发综合优化方案
cdn