当前位置: 首页 > news >正文

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为例:

测试代码:

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

执行结果:

/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

Installing /luarocks.org/lua-cjson-2.1.0.10-1.src.rocklua-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)
# find /usr/local/openresty/luajit -name cjson.so 
/usr/local/openresty/luajit/lib/lua/5.1/cjson.so

luarocks 安装nettle

# 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
http://www.gsyq.cn/news/153458.html

相关文章:

  • 12.24 前端的细节
  • 一文搞懂:如何判断电脑该装32位还是64位系统
  • 微信小程序uniapp-vue精品课程在线学习平台
  • 2022 JustCTF Notes PWN堆学习 house of batcake
  • 2025老年猫粮怎么选?权威推荐指南来了 - 极欧测评
  • 电力系统故障类型甄别与故障定位探索
  • 探索二阶非线性自抗扰控制器(ADRC)
  • 学长亲荐10个AI论文软件,自考本科毕业论文轻松搞定!
  • AI 在静雅斋中的使用角度梳理
  • 飞行的“社会公平”:技术与政策如何破解低空出行的“精英化”与“数字鸿沟”难题
  • 广东经济深度复盘:穿越周期的韧性与新旧动能转换
  • 机器学习——罗辑回归
  • 哪些字段适合加索引,哪些不适合加?
  • 推荐靠谱诚信的企业展厅设计公司,盛世笔特
  • 昇思MindSpore打造HyperParallel架构,引领AI框架迈入“超节点时代”
  • 算力饱和打击:无人机蜂群的实时三维重建如何碾碎战场迷雾 - 品牌2025
  • 线程的互斥与同步
  • iOS架构演进终极指南:Kickstarter从Objective-C到Swift的完整迁移案例 - 教程
  • OpenWRT源码下载
  • 口碑好的企业展厅设计企业推荐:盛世笔特
  • 2025-2026年实验室粉碎机/液氮低温粉碎机推荐厂家/哪家质量好/口碑好/牌子好 - 品牌推荐大师1
  • 你想学的黑客攻防技术都在这里了,一篇打包带走!
  • 工业品转型品牌全案策划咨询怎么做?奇正沐古给出建议 - 资讯焦点
  • 2025年信誉好的腾讯广告专业服务商、实力强的腾讯广告服务商推荐
  • 可视化图解算法75:最长上升子序列(最长递增子序列)
  • 简易 python 打字计数器
  • 2025年国内家居家纺展示平台口碑推荐榜单有哪些? - 讯息观点
  • 06 让用户输入信息
  • 2025年包装袋厂家权威推荐:环保与本地化双轮驱动,谁在引领行业转型? - 深度智识库
  • 2025全能二维码生成器终极推荐 - 资讯焦点