nginx

Lua包管理工具Luarocks是干什么的?

1. Luarocks是什么?

2. Luarocks有什么用?

    lua这种解释性的语言,其代码的运行必须要有一个运行环境才行,这个运行环境就是能够解释代码的代码解释器——-虚拟机,就像java,ruby,go语言之类一样,都要由虚拟机来解释执行其代码,Lua这种解释性的语言自然也需要这种虚拟机了。上一篇介绍的,lua环境的搭建,其实就是在做一件事情—-编译出lua的虚拟机。

    任何一门语言都有很多的依赖库,包括编译型的语言和解释性的语言都一样,需要库函数来支持其功能的扩展或者是功能的完备性实现。像ruby就有很多的gem包,这个gem包就是ruby这门解释性语言的库。

    Lua程序的运行,也需要很多的库函数的支持,例如网路函数库、字符串处理函数库等等。在lua的虚拟机执行lua程序的时候,如果遇到require “XXXXX”,那么虚拟机就知道要去相应的地方去找这个包(库函数的集合),那么去哪里寻找呢?这个寻找路径如果是绝对路径,那么虚拟机自然可以找到,但是如果只是一个包名,那么虚拟机就要依赖于一个找寻路径规则来找寻该包了,类似于C语言中的INCLUDE_PATH这个机制。这个虚拟机默认的找寻路径可以在编译虚拟机的时候设置,也就是在搭建lua运行环境的时候来设置这个路径,在下载下来的lua虚拟机的源代码中,有一个.h文件,叫做luaconf.h,这个文件里面有很多配置虚拟机属性的配置项,这里面有一个宏定义叫做LUA_PATH_DEFAULT,它就是lua的虚拟机去找寻lua包的路径,还有一个路径就是LUA_CPATH_DEFAULT,它是告诉lua虚拟机去找寻C动态库的路径。

    结论:lua的执行不仅需要虚拟机,还需要依赖一些库(lua叫做包),虚拟机会根据一套路径找寻规则来找这些包。

    既然有包,那根据我们的不同需求,就会有很多的包,这些包辣么多,有些要升级,有些要删除,有些要降级之类的等等,有一些包还有依赖关系,非常麻烦。。。。这样的话,对这些包的管理这个新的需求就出现了—-管理lua的包。so,Luarocks就出现了,它就是专门管理lua的包的一种工具——-包管理器。它可以帮助我们下载、查找、删除我们需要的包,一句话,帮助我们方便地管理这些lua的依赖包。

什么是Luarocks:

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

源码安装部署Luarocks

    wget http://luarocks.org/releases/luarocks-2.2.2.tar.gz

    tar zxvf luarocks-2.2.2.tar.gz

    cd luarocks-2.2.2

    ./configure –help

configure help查看所支持的安装配置,这里我们主要关注以下两个
–prefix=DIR                     Prefix where LuaRocks should be installed.  Default is /usr/local
–with-lua=PREFIX           Use Lua from given prefix.   Default is auto-detected (the parent directory of $LUA_BINDIR).
–prefix设置Luarocks安装路径,–with-lua指定Luarocks依赖的Lua安装路径(就是你的机器的lua虚拟机安装到那里)

为何强调设置–prefix
设置prefix会自动将Luarocks以及往后使用Luarocks安装的Lua包,LuaC包都安装到Luarocks安装路径下的相应位置,否则相关的包文件散落在文件系统中,显得杂乱不便于管理,如果所安装的Lua模板包含bin文件,则会自动安装到此目录下的bin路径,与Luarocks可执行文件同一路径,更便于管理、使用。

这里我们就用默认的安装路径好了。。。。

./configure
make build
make install