Openresty 学习笔记(四)lualocks包管理器安装使用

  Luarocks是一个Lua包管理器,基于Lua语言开发,提供一个命令行的方式来管理Lua包依赖、安装第三方Lua包等,社区比较流行的包管理器之一,另还有一个LuaDist,Luarocks的包数量比LuaDist多,更细节的两者对比可参阅这里

  在做一些openresty的项目的时候,经常会借助一些第三方包来协助开发,为了方便管理,我们可以使用openresy官方的opm,或者lua的包管理工具luarocks,只不过opm的包数量还不是太多,用的较多的还是luarocks,现在只能期待opm社区不断的发展壮大了。

编译安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
wget https://github.com/luarocks/luarocks/archive/v3.0.0.tar.gz
 
tar zxvf v3.0.0.tar.gz
 
cd luarocks-3.0.0/
 
./configure --prefix=/usr/local/openresty/luajit \
--with-lua=/usr/local/openresty/luajit/ \
--lua-suffix=jit \
--with-lua-include=/usr/local/openresty/luajit/include/luajit-2.1
 
make build
# 安装需要root权限
sudo make install

安装参数说明

--prefix 设定 luarocks 的安装目录

--with-lua 则是系统中安装的 lua 的根目录

--lua-suffix 版本后缀,此处因为openresyt的lua解释器使用的是 luajit ,所以此处得写 jit

--with-lua-include 设置 lua 引入一些头文件头文件的目录

查看版本

1
2
3
luarocks --version
/usr/local/openresty/luajit/bin/luarocks 3.0.0
LuaRocks main command-line interface  

提示错误

1
2
3
4
5
6
7
8
9
Configuring LuaRocks...
 
Lua version detected: 5.1
Lua interpreter found: /usr/local/openresty/luajit/bin/luajit
lua.h found: /usr/local/openresty/luajit/include/luajit-2.1/lua.h
Could not find 'unzip'.
Make sure it is installed and available in your PATH.
 
configure failed.

 安装

1
sudo apt install unzip

执行 luarocks install package 就可以安装lua的包了
luarocks install package --tree=path 还可以指定你安装的包的存放路径

下载 rapidjson

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
$ luarocks install rapidjson --tree=/usr/local/openresty/lualib/resty
Installing https://luarocks.org/rapidjson-0.5.1-1.src.rock
 
-- The C compiler identification is GNU 7.3.0
-- The CXX compiler identification is GNU 7.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- LUA_RAPIDJSON_VERSION: 0.5.1
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/luarocks_rapidjson-0.5.1-1-fd1Qr3/lua-rapidjson/build.luarocks
Scanning dependencies of target lua-rapidjson
[ 20%] Building CXX object CMakeFiles/lua-rapidjson.dir/src/Document.cpp.o
[ 40%] Building CXX object CMakeFiles/lua-rapidjson.dir/src/Schema.cpp.o
[ 60%] Building CXX object CMakeFiles/lua-rapidjson.dir/src/rapidjson.cpp.o
[ 80%] Building CXX object CMakeFiles/lua-rapidjson.dir/src/values.cpp.o
[100%] Linking CXX shared module rapidjson.so
[100%] Built target lua-rapidjson
[100%] Built target lua-rapidjson
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/openresty/lualib/resty/lib/luarocks/rocks-5.1/rapidjson/0.5.1-1/lib/rapidjson.so
rapidjson 0.5.1-1 is now installed in /usr/local/openresty/lualib/resty (license: MIT)

 安装路径

1
2
3
$/usr/local/openresty/lualib/resty/lib/luarocks/rocks-5.1
ls
30log  luasocket  manifest  rapidjson

 使用

1
2
3
4
5
6
7
local rapidjson = require('rapidjson')
 
rapidjson.encode()
rapidjson.decode()
 
rapidjson.load()
rapidjson.dump()

》》可能遇到的问题!!!

使用 `www `账户安装 https://github.com/GUI/lua-resty-auto-ssl 扩展的时候一直提示这个错误
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2018/12/24 10:34:06 [error] 11222#11222: init_by_lua error: init_by_lua:2: module 'resty.auto-ssl' not found:
 
no field package.preload['resty.auto-ssl']
 
no file '/usr/local/openresty/lualib/resty/auto-ssl.lua'
 
no file '/usr/local/openresty/site/lualib/resty/auto-ssl.ljbc'
 
no file '/usr/local/openresty/site/lualib/resty/auto-ssl/init.ljbc'
 
no file '/usr/local/openresty/lualib/resty/auto-ssl.ljbc'
 
no file '/usr/local/openresty/lualib/resty/auto-ssl/init.ljbc'
 
no file '/usr/local/openresty/site/lualib/resty/auto-ssl.lua'
 
no file '/usr/local/openresty/site/lualib/resty/auto-ssl/init.lua'
 
no file '/usr/local/openresty/lualib/resty/auto-ssl.lua'
 
no file '/usr/local/openresty/lualib/resty/auto-ssl/init.lua'
 
no file './resty/auto-ssl.lua'
 
stack traceback:
 
[C]: in function 'require'
 
init_by_lua:2: in main chunk

》》解决方式一:切换成 root 账户安装,`luarocks install lua-resty-auto-ssl`。以上问题解决了 

》》解决方式二:如果使用   sudo ,则使用绝对路径解决

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
$ sudo /usr/local/openresty/luajit/bin/luarocks install lua-resty-auto-ssl
Warning: The directory '/home/www/.cache/luarocks' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing /usr/local/openresty/luajit/bin/luarocks with sudo, you may want sudo's -H flag.
Installing https://luarocks.org/lua-resty-auto-ssl-0.12.0-1.src.rock
 
mkdir -p /tmp/luarocks_lua-resty-auto-ssl-0.12.0-1-FdxVn9/lua-resty-auto-ssl/build
rm -f /tmp/luarocks_lua-resty-auto-ssl-0.12.0-1-FdxVn9/lua-resty-auto-ssl/build/stamp-dehydrated-*
mkdir -p /tmp/luarocks_lua-resty-auto-ssl-0.12.0-1-FdxVn9/lua-resty-auto-ssl/build/bin
curl -sSLo /tmp/luarocks_lua-resty-auto-ssl-0.12.0-1-FdxVn9/lua-resty-auto-ssl/build/bin/dehydrated "https://raw.githubusercontent.com/lukas2511/dehydrated/0bc0bd13d6abdc027c58bec12f7c2d3198d3a677/dehydrated"
chmod +x /tmp/luarocks_lua-resty-auto-ssl-0.12.0-1-FdxVn9/lua-resty-auto-ssl/build/bin/dehydrated
touch /tmp/luarocks_lua-resty-auto-ssl-0.12.0-1-FdxVn9/lua-resty-auto-ssl/build/stamp-dehydrated-2-0bc0bd13d6abdc027c58bec12f7c2d3198d3a677
rm -f /tmp/luarocks_lua-resty-auto-ssl-0.12.0-1-FdxVn9/lua-resty-auto-ssl/build/stamp-lua-resty-shell-*
curl -sSLo /tmp/luarocks_lua-resty-auto-ssl-0.12.0-1-FdxVn9/lua-resty-auto-ssl/lib/resty/auto-ssl/vendor/shell.lua "https://raw.githubusercontent.com/juce/lua-resty-shell/955243d70506c21e7cc29f61d745d1a8a718994f/lib/resty/shell.lua"
touch /tmp/luarocks_lua-resty-auto-ssl-0.12.0-1-FdxVn9/lua-resty-auto-ssl/build/stamp-lua-resty-shell-955243d70506c21e7cc29f61d745d1a8a718994f
rm -f /tmp/luarocks_lua-resty-auto-ssl-0.12.0-1-FdxVn9/lua-resty-auto-ssl/build/stamp-sockproc-*
mkdir -p /tmp/luarocks_lua-resty-auto-ssl-0.12.0-1-FdxVn9/lua-resty-auto-ssl/build/bin
cd /tmp/luarocks_lua-resty-auto-ssl-0.12.0-1-FdxVn9/lua-resty-auto-ssl/build && curl -sSLo sockproc-fc8ad3f15a7b2cf2eaf39663b90010efc55e207c.tar.gz "https://github.com/juce/sockproc/archive/fc8ad3f15a7b2cf2eaf39663b90010efc55e207c.tar.gz"
cd /tmp/luarocks_lua-resty-auto-ssl-0.12.0-1-FdxVn9/lua-resty-auto-ssl/build && tar -xf sockproc-fc8ad3f15a7b2cf2eaf39663b90010efc55e207c.tar.gz
cd /tmp/luarocks_lua-resty-auto-ssl-0.12.0-1-FdxVn9/lua-resty-auto-ssl/build/sockproc-fc8ad3f15a7b2cf2eaf39663b90010efc55e207c && make
make[1]: Entering directory '/tmp/luarocks_lua-resty-auto-ssl-0.12.0-1-FdxVn9/lua-resty-auto-ssl/build/sockproc-fc8ad3f15a7b2cf2eaf39663b90010efc55e207c'
gcc -Wall -Werror -o sockproc sockproc.c
make[1]: Leaving directory '/tmp/luarocks_lua-resty-auto-ssl-0.12.0-1-FdxVn9/lua-resty-auto-ssl/build/sockproc-fc8ad3f15a7b2cf2eaf39663b90010efc55e207c'
cp /tmp/luarocks_lua-resty-auto-ssl-0.12.0-1-FdxVn9/lua-resty-auto-ssl/build/sockproc-fc8ad3f15a7b2cf2eaf39663b90010efc55e207c/sockproc /tmp/luarocks_lua-resty-auto-ssl-0.12.0-1-FdxVn9/lua-resty-auto-ssl/build/bin/sockproc
chmod +x /tmp/luarocks_lua-resty-auto-ssl-0.12.0-1-FdxVn9/lua-resty-auto-ssl/build/bin/sockproc
touch /tmp/luarocks_lua-resty-auto-ssl-0.12.0-1-FdxVn9/lua-resty-auto-ssl/build/stamp-sockproc-2-fc8ad3f15a7b2cf2eaf39663b90010efc55e207c
install -d /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl
install -m 644 lib/resty/auto-ssl.lua /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl.lua
install -m 644 lib/resty/auto-ssl/init_master.lua /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl/init_master.lua
install -m 644 lib/resty/auto-ssl/init_worker.lua /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl/init_worker.lua
install -d /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl/jobs
install -d /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl/json_adapters
install -m 644 lib/resty/auto-ssl/json_adapters/cjson.lua /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl/json_adapters/cjson.lua
install -m 644 lib/resty/auto-ssl/json_adapters/dkjson.lua /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl/json_adapters/dkjson.lua
install -m 644 lib/resty/auto-ssl/jobs/renewal.lua /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl/jobs/renewal.lua
install -d /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl/servers
install -m 644 lib/resty/auto-ssl/servers/challenge.lua /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl/servers/challenge.lua
install -m 644 lib/resty/auto-ssl/servers/hook.lua /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl/servers/hook.lua
install -m 644 lib/resty/auto-ssl/ssl_certificate.lua /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl/ssl_certificate.lua
install -d /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl/ssl_providers
install -m 644 lib/resty/auto-ssl/ssl_providers/lets_encrypt.lua /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl/ssl_providers/lets_encrypt.lua
install -m 644 lib/resty/auto-ssl/storage.lua /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl/storage.lua
install -d /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl/storage_adapters
install -m 644 lib/resty/auto-ssl/storage_adapters/file.lua /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl/storage_adapters/file.lua
install -m 644 lib/resty/auto-ssl/storage_adapters/redis.lua /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl/storage_adapters/redis.lua
install -d /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl/utils
install -m 644 lib/resty/auto-ssl/utils/shell_execute.lua /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl/utils/shell_execute.lua
install -m 644 lib/resty/auto-ssl/utils/start_sockproc.lua /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl/utils/start_sockproc.lua
install -m 644 lib/resty/auto-ssl/utils/run_command.lua /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl/utils/run_command.lua
install -d /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl/vendor
install -m 644 lib/resty/auto-ssl/vendor/shell.lua /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/lua/resty/auto-ssl/vendor/shell.lua
install -d /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/bin/resty-auto-ssl
install -m 755 bin/letsencrypt_hooks /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/bin/resty-auto-ssl/letsencrypt_hooks
install -m 755 bin/start_sockproc /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/bin/resty-auto-ssl/start_sockproc
install -m 755 /tmp/luarocks_lua-resty-auto-ssl-0.12.0-1-FdxVn9/lua-resty-auto-ssl/build/bin/dehydrated /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/bin/resty-auto-ssl/dehydrated
install -m 755 /tmp/luarocks_lua-resty-auto-ssl-0.12.0-1-FdxVn9/lua-resty-auto-ssl/build/bin/sockproc /usr/local/openresty/luajit/lib/luarocks/rocks-5.1/lua-resty-auto-ssl/0.12.0-1/bin/resty-auto-ssl/sockproc
lua-resty-auto-ssl 0.12.0-1 is now installed in /usr/local/openresty/luajit (license: MIT)

》》解决方式三:修改/etc/sudoers这个文件,将要执行的命令所在的目录添加到后面 

1
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/openresty/luajit/bin" 

参考

1、https://segmentfault.com/a/1190000008658146

2、https://luarocks.org/

 

posted @   Tinywan  阅读(3437)  评论(2编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2016-09-06 Git与GitHub学习笔记(一)如何删除github里面的文件夹?
点击右上角即可分享
微信分享提示