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


原文始发于微信公众号(开源技术小栈):Openresty如何使用lualocks包管理器安装使用Lua包

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/247672.html

(0)
李, 若俞的头像李, 若俞

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!