Chinaunix首页 | 论坛 | 博客
  • 博客访问: 546160
  • 博文数量: 911
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 7395
  • 用 户 组: 普通用户
  • 注册时间: 2022-03-07 15:28
个人简介

天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。

文章分类

全部博文(911)

文章存档

2026年(14)

2025年(202)

2024年(244)

2023年(247)

2022年(202)

我的朋友

分类: 网络与安全

2025-12-29 16:37:52

本文分享自天翼云开发者社区《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为例:

测试代码:

点击(此处)折叠或打开

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

执行结果:

点击(此处)折叠或打开

  1. /usr/local/openresty/luajit/bin/luajit: test.lua:3: module 'cjson' not found:
  2.         no field package.preload['cjson']
  3.         no file './cjson.lua'
  4.         no file '/usr/local/openresty/luajit/share/luajit-2.1.0-beta3/cjson.lua'
  5.         no file '/usr/local/share/lua/5.1/cjson.lua'
  6.         no file '/usr/local/share/lua/5.1/cjson/init.lua'
  7.         no file '/usr/local/openresty/luajit/share/lua/5.1/cjson.lua'
  8.         no file '/usr/local/openresty/luajit/share/lua/5.1/cjson/init.lua'
  9.         no file './cjson.so'
  10.         no file '/usr/local/lib/lua/5.1/cjson.so'
  11.         no file '/usr/local/openresty/luajit/lib/lua/5.1/cjson.so'
  12.         no file '/usr/local/lib/lua/5.1/loadall.so'
  13. stack traceback:
  14.         [C]: in function 'require'
  15.         test.lua:3: in main chunk
  16.         [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


点击(此处)折叠或打开

  1. Installing /luarocks.org/lua-cjson-2.1.0.10-1.src.rock

  2. lua-cjson 2.1.0.10-1 depends on lua >= 5.1 (5.1-1 provided by VM)
  3. gcc -O2 -fPIC -I/usr/local/openresty/luajit/include/luajit-2.1 -c lua_cjson.c -o lua_cjson.o
  4. gcc -O2 -fPIC -I/usr/local/openresty/luajit/include/luajit-2.1 -c strbuf.c -o strbuf.o
  5. gcc -O2 -fPIC -I/usr/local/openresty/luajit/include/luajit-2.1 -c fpconv.c -o fpconv.o
  6. gcc -shared -o cjson.so lua_cjson.o strbuf.o fpconv.o
  7. No existing manifest. Attempting to rebuild...
  8. lua-cjson 2.1.0.10-1 is now installed in /usr/local/openresty/luajit (license: MIT)

点击(此处)折叠或打开

  1. # find /usr/local/openresty/luajit -name cjson.so
  2. /usr/local/openresty/luajit/lib/lua/5.1/cjson.so

luarocks 安装nettle


点击(此处)折叠或打开

  1. # find /usr/local/openresty/luajit -name *nettle*
  2. /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-nettle
  3. /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-nettle/2.1-1/lua-resty-nettle-2.1-1.rockspec
  4. /usr/local/openresty/luajit/share/lua/5.1/resty/nettle
  5. /usr/local/openresty/luajit/share/lua/5.1/resty/nettle/types/nettle-types.lua
  6. /usr/local/openresty/luajit/share/lua/5.1/resty/nettle.lua


阅读(2) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~