Openresty如何使用lualocks包管理器安装使用Lua包

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

更细节的两者对比可参阅这里 http://notebook.kulchenko.com/zerobrane/lua-package-managers-luadist-luarocks-and-integration-with-zerobrane-studio

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

编译安装

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 引入一些头文件头文件的目录

查看版本

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

提示错误

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.

解决

sudo apt install unzip

安装Lua包

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

安装rapidjson

rapidjson 是有名的开源c++ json库,其类java的API使得其易于使用,然而对于rapidjson中的setInt,setString等等setXXX的函数,以及getInt, getString等等getXXX的函数,作者觉得太过于繁琐,想到如果能将这些set和get封装起来,仅仅使用一个函数接口来调用,那么代码将会显得很简洁,维护起来也容易多了。

安装

$ 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)

安装路径

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

使用

local rapidjson = require(\\\'rapidjson\\\')
 
rapidjson.encode()
rapidjson.decode()
 
rapidjson.load()
rapidjson.dump()

原创文章,作者:网络技术联盟站,如若转载,请注明出处:https://www.sudun.com/ask/49748.html

(0)
网络技术联盟站的头像网络技术联盟站
上一篇 2024年5月16日
下一篇 2024年5月16日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注