zoukankan      html  css  js  c++  java
  • [记录点滴]编译安装luarocks、luacheck、luautf8

    [记录点滴]编译安装luarocks、luacheck、luautf8

    0x00 摘要

    记录一次安装luarocks&第三方库的过程。

    0x01 luarocks

    如今每个语言体系中都有一个包管理工具,PHP的Composer,Ruby的gem,Python的pip,lua第三方包管理工具就是luarocks。

    wget https://luarocks.org/releases/luarocks-2.4.1.tar.gz
    tar zxpf luarocks-2.4.1.tar.gz 
    cd luarocks-2.4.1
    ./configure --with-lua-include=/usr/local/openresty/luajit/include/luajit-2.1/
    sudo make bootstrap
    

    编译安装

    mkdir -p "/usr/local/share/lua/5.1//luarocks"
    cp src/luarocks/site_config.lua "/usr/local/share/lua/5.1//luarocks"
    mkdir -p "/usr/local"
      
    查看
    which luarocks 
    /usr/local/bin/luarocks  
    

    0x02 安装luacheck

    luacheck 是google推出的一款针对lua静态检查的开源工具,其安装简单,操作容易,检查严格,参数可控,很适合项目的lua开发。

    luarocks install luacheck --- 成功
    

    下面是luacheck git网址,留作备份

    https://github.com/mpeterv/luacheck/

    0x03 安装utf8第三方库

    从这里下载 https://github.com/starwing/luautf8

    Note that to avoid conflict with the Lua5.3's buitin library 'utf8', this library produce a file like lua-utf8.dll or lua-utf8.so. so use it like this:
    
    local utf8 = require 'lua-utf8'
    in your codes :-(
    
    LuaRocks Installation
    
    luarocks install luautf8
    
    It's now full-compatible with Lua5.3's utf8 library, so replace this file (and headers) with lua5.3 source's lutf8lib.c is also okay.
    

    安装

    luarocks install luautf8
    Installing https://luarocks.org/luautf8-0.1.1-1.src.rock
    gcc -O2 -fPIC -I/usr/local/openresty/luajit/include/luajit-2.1/ -c lutf8lib.c -o lutf8lib.o
    gcc -shared -o lua-utf8.so -L/usr/lib lutf8lib.o
    luautf8 0.1.1-1 is now installed in /usr/local (license: MIT)
    

    最后发现位置是:

    $ find . -name "lua-utf8.so"
    ./usr/local/lib/lua/5.1/lua-utf8.so
    ./srv/lua/xxxx/libs/unix/lua-utf8.so
    

    在lua中测试:

    local UTF8 = require "util.misc.utf8"
    local u = UTF8.escape
    ngx.say(RESPONSE.error(-1, u"%123%u123%{123}%u{123}%xABC%x{ABC}", 404))
    ngx.say(RESPONSE.error(-1, u"%%123%?%d%%u", 404))
    print(u"%123%u123%{123}%u{123}%xABC%x{ABC}")
    print(u"%%123%?%d%%u")
    
    得到response是:
    {"code":-1,"data":{"status":404},"message":"{{{{઼઼"}
    {"code":-1,"data":{"status":404},"message":"%123?d%u"}
    
  • 相关阅读:
    简单实现vue列表点击某个高亮显示
    vue中子组件直接修改父组件prop属性bug
    Java基础——关于接口和抽象类的几道练习题
    Eclipse中导入外部jar包步骤
    Java基础——关于jar包的知识
    Java基础——关于访问权限的一道例题
    Java基础——抽象类和接口
    Java基础——多态
    Java基础——继承
    三个案例,解读静态代码块和构造代码块
  • 原文地址:https://www.cnblogs.com/rossiXYZ/p/13196359.html
Copyright © 2011-2022 走看看