Lua包管理工具Luarocks
- 什么是Luarocks
- 源码安装部署Luarocks
- 注册Luarocks为Lua社区贡献自己的代码
- Luarocks使用初探
####什么是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安装路径。
#####为何强调设置--prefix 设置prefix会自动将Luarocks以及往后使用Luarocks安装的Lua包,LuaC包都安装到Luarocks安装路径下的相应位置,否则相关的包文件散落在文件系统中,显得杂乱不便于管理,如果所安装的Lua模板包含bin文件,则会自动安装到此目录下的bin路径,与Luarocks可执行文件同一路径,更便于管理、使用。
./configure --prefix=/usr/local/luarocks-2.2.2 --with-lua=/usr/local/lua-5.1.5
make build
make install
安装完成后,直接运行luarocks即可使用。
// luarocksLuaRocks 2.2.2, a module deployment system for LuaNAME/usr/local/bin/luarocks - LuaRocks main command-line interface
####注册Luarocks为Lua社区贡献自己的代码 当前IT技术发展惊人的快,很大程度上与开源社区的快速发展有直接关系,大家一起分享知识、经验、解决方案,互相支持、协作。我们从社区汲取养分,学习成长,回过头来我们也需要回馈社区,这才是一个良性循环。
使用Luarocks为Lua社区贡献代码非常简单,只需如下几步:
- 到官网注册一个luarocks账号
- 在官网<a name="api-key">设置页面生成API-Keys(用作包提交的验证)
- 在项目根目录根据rockspec文件格式书写你自己的rockspec文件(或者在项目根目录运行
luarocks write_rockspec
命令自动生成) - 使用API-key上传你的项目到luarocks.org(命令行运行
luarocks upload --api-key=
) - 在你的项目页面点击下图所示的
Add To Manifest
将你的项目添加到相关分类方便分类检索,默认已经在root里。
####Luarocks使用初探 命令行运行luarocks
,或者luarocks help
能看到相关luarocks的详细信息,大致分为以下6个段。
- NAME/名称 显示Luarocks说明信息
- LuaRocks main command-line interface
- SYNOPSIS/概要 显示luarocks命令参数使用格式:
luarocks [--from=<server> | --only-from=<server>] [--to=<tree>] [VAR=VALUE]... <command> [<argument>]
- GENERAL OPTIONS/通用选项 被所有命令所支持的选项,包含指定搜索
rocks/rockspecs
的server,默认的<a name="server"/>server搜寻顺序为:
https://luarocks.org
https://raw.githubusercontent.com/rocks-moonscript-org/moonrocks-mirror/master/
http://luafr.org/moonrocks/
http://luarocks.logiceditor.com/rocks
另外选项还设置是否仅仅下载源码、是否显示安装过程、指定超时时间等。 4. VARIABLES/变量 Variables from the "variables" table of the configuration file can be overriden with VAR=VALUE assignments. 5. COMMANDS/命令列表 luarocks的常规操作命令install、search、list等
6. CONFIGURATION/相关配置信息 Lua版本,rocks trees等安装luarocks时的配置
在luarocks使用中我们主要关注GENERAL OPTIONS、和COMMANDS两项。GENERAL OPTIONS与其他COMMANDS配合使用。以搜索香草/vanilla框架(一个基于Lua开发的Openresty Web应用开发框架)为例:
// luarocks search vanilla #直接搜索vanillaSearch results:
===============
Rockspecs and source rocks:
---------------------------
vanilla0.1.0-1 (rockspec) - https://luarocks.org0.1.0-1 (src) - https://luarocks.org0.0.1-1 (rockspec) - https://luarocks.org0.0.1-1 (src) - https://luarocks.org
也可以在命令后加上一个GENERAL OPTIONS/通用选项比如--verbose来显示整个命令运行过程(这对排查安装中遇到的问题非常有用)。
// luarocks search vanilla --verbose #添加参数显示整个搜索vanilla的过程os.execute: 'curl' -k -f -L --user-agent 'LuaRocks/2.2.2 macosx-x86_64 via curl' --connect-timeout 30 'https://luarocks.org/manifest-5.1.zip' 2> /dev/null 1> '/Users/zhoujing/.cache/luarocks/https___luarocks.org/manifest-5.1.zip'
Results: 11 (number): 0os.execute: unzip -n '/Users/zhoujing/.cache/luarocks/https___luarocks.org/manifest-5.1.zip'
Archive: /Users/zhoujing/.cache/luarocks/https___luarocks.org/manifest-5.1.zipinflating: manifest-5.1
Results: 11 (number): 0Search results:
===============
Rockspecs and source rocks:
---------------------------
vanilla0.1.0-1 (rockspec) - https://luarocks.org0.1.0-1 (src) - https://luarocks.org0.0.1-1 (rockspec) - https://luarocks.org0.0.1-1 (src) - https://luarocks.org
命令的执行参数追加的格式如同SYNOPSIS描述的那样: luarocks [--from=<server> | --only-from=<server>] [--to=<tree>] [VAR=VALUE]... <command> [<argument>]
, 可以使用luarocks <command> help
查看command更细节的帮助文档,这也非常有用。
#####几个常用的luarocks命令详解 上面演示了search命令,看字面意思就很明白是用来搜索模块的,使用相对比较简单也容易理解,类似的命令还有download、help、install、list、new_version、remove、upload
等,但是余下的几个命令也很重要,使用起来就不是那么好理解,下面以一个test的项目重点演示说明(每个命令使用时都建议先执行luarocks <command> help
查看详细文档,下面仅截取各命令文档的NAME和SYNOPSIS段并详述、演示使用过程)。
~/Desktop/ tree ./t-luarocks
./t-luarocks
├── test
│ ├── spec
│ │ └── init.lua
│ ├── sys
│ │ ├── config.lua
│ │ └── vanilla.lua
│ └── v
│ ├── application.lua
│ ├── bootstrap.lua
│ ├── controller.lua
│ └── dispatcher.lua
└── test-0.0.rc1-1.rockspec
#####➥ build
~/Desktop/t-luarocks/ luarocks help build
NAME/usr/local/bin/luarocks build - Build/compile a rock.
SYNOPSIS/usr/local/bin/luarocks build [--pack-binary-rock] [--keep] {<rockspec>|<rock>|<name> [<version>]}
build命令用来基于rock二进制文件安装Lua包,前提rock文件基于规范的rockspec文件打包,且rockspec包含正确的build段描述。
#####➥ doc
~/Desktop/t-luarocks/ luarocks help doc
NAME/usr/local/bin/luarocks doc - Shows documentation for an installed rock.
SYNOPSIS/usr/local/bin/luarocks doc <argument>
doc命令用来显示本地已经安装的Lua包根目录下所有的Markdown文档列表,并默认自动打开README.md文件,如果相应的Lua包本地并没有安装,则会到服务器上搜寻。
~/Desktop/t-luarocks/ luarocks doc vanilla
Documentation files for vanilla 0.1.0-1
---------------------------------------
/usr/local/luarocks-2.2.2/lib/luarocks/rocks/vanilla/0.1.0-1/doc/CHANGELOG.mdLICENSE.mdREADME-zh.mdREADME.md
Opening /usr/local/luarocks-2.2.2/lib/luarocks/rocks/vanilla/0.1.0-1/doc/README.md ...
#####➥ lint
~/Desktop/t-luarocks/ luarocks help lint
NAME/usr/local/bin/luarocks lint - Check syntax of a rockspec.
SYNOPSIS/usr/local/bin/luarocks lint <rockspec>
lint命令用来检查当前目录rockspec文件(rockspec文件为Luarocks包管理的描述文件,细节写法会另起文档描述)的格式,如果格式没问题则不会有任何显示,否则则暴露细节错误,指导修改。
#####➥ make
~/Desktop/t-luarocks/ luarocks help make
NAME/usr/local/bin/luarocks make - Compile package in current directory using a rockspec.
SYNOPSIS/usr/local/bin/luarocks make [--pack-binary-rock] [<rockspec>]
make命令基于一个rockspec文件安装Lua包,这个文件必须是本地的一个文件,而不像install那样可以是一个网络文件。这个命令还可以通过追加参数--pack-binary-rock
而仅仅编译生成rock文件,make命令与install命令的区别在于install基于rock文件,而make必须基于rockspec文件。
#####➥ pack
~/Desktop/t-luarocks/ luarocks help pack
NAME/usr/local/bin/luarocks pack - Create a rock, packing sources or binaries.
SYNOPSIS/usr/local/bin/luarocks pack {<rockspec>|<name> [<version>]}
pack命令根据本地rockspec文件将Lua源码包打包成二进制的rock文件(install命令基于rock文件进行安装)。
#####➥ path
~/Desktop/t-luarocks/ luarocks help path
NAME/usr/local/bin/luarocks path - Return the currently configured package path.
SYNOPSIS/usr/local/bin/luarocks path
path命令显示当前Luarocks所配置的LUA_PATH和LUA_CPATH值
#####➥ purge
~/Desktop/t-luarocks/ luarocks help purge
NAME/usr/local/bin/luarocks purge - Remove all installed rocks from a tree.
SYNOPSIS/usr/local/bin/luarocks purge --tree=<tree> [--old-versions]
purge命令必须传入一个--tree
参数,这里的tree其实是一个路径,luarocks安装Lua包所在路径,purge命令将这个路径下面所有的包都remove。这个命令完全挽救了没有指定--prefix而安装luarocks的同学,在没有指定--prefix的时候luarocks将默认的安装到/usr/local
路径下,基于此安装的包也将散落在整个/usr/local
目录,真是太乱。这时候在命令行执行luarocks purge --tree=/usr/local
整个世界都干净了。
#####➥ show
~/Desktop/t-luarocks/ luarocks help show
NAME/usr/local/bin/luarocks show - Shows information about an installed rock.
SYNOPSIS/usr/local/bin/luarocks show <argument>
show 命令可用来显示包信息,这些信息来自于当前Lua包的rockspec文件中。 #####➥ unpack
~/Desktop/t-luarocks/ luarocks help unpack
NAME/usr/local/bin/luarocks unpack - Unpack the contents of a rock.
SYNOPSIS/usr/local/bin/luarocks unpack [--force] {<rock>|<name> [<version>]}
unpack命令将pack命令打包的rock解开。
#####➥ upload
~/Desktop/t-luarocks/ luarocks help upload
NAME/usr/local/bin/luarocks upload - Upload a rockspec to the public rocks repository.
SYNOPSIS/usr/local/bin/luarocks upload [--skip-pack] [--api-key=<key>] [--force] <rockspec>
upload命令会根据rockspec文件将当前Lua包打包成rock文件然后上传至luarocks.org,上传需要添加一个在官网配置过的api-key
参数进行验证。
#####➥ write_rockspec
~/Desktop/t-luarocks/ luarocks help write_rockspec
NAME/usr/local/bin/luarocks write_rockspec - Write a template for a rockspec file.
SYNOPSIS/usr/local/bin/luarocks write_rockspec [--output=<file> ...] [<name>] [<version>] {<url>|<path>}
write_rockspec命令在当前目录自动生成一个rockspec文件骨架,一个template,注意仅仅是一个骨架,有些参数必须落实,否则无法正常使用,比如source、description
段的配置。
下面给出一个简单的rockspec文件模板,包含了rockspec文件的基本必选项:
package ="vanilla"
version ="0.1.0-1"source ={url ="git://github.com/idevz/vanilla.git" #必须为可访问的在线库地址
}description ={summary ="A Lightweight Openresty Web Framework",homepage ="http://idevz.github.io/vanilla",maintainer ="zhoujing<zhoujing00k@gmail.com>",license ="MIT" #必须指明所基于的开源协议
}dependencies ={"lua=5.1",... ..."lua-resty-http=0.06-0"
}build ={type ="builtin",modules ={["vanilla.v.view"] ="vanilla/v/view.lua",... ...["vanilla.v.views.rtpl"] ="vanilla/v/views/rtpl.lua",},install ={bin ={ "bin/vanilla" }},
}
Lua包管理工具Luarocks相关推荐
- Python包管理工具Distribute的安装
Python包管理工具Distribute的安装 Python的包管理工具常见的有easy_install, setuptools, 还有pip, distribute,那麽这几个工具有什么关系呢,看 ...
- pip包管理工具-install执行流程简单查看
pip概述 pip是python提供的包管理工具,该工具提供了对python包的查找.下载.安装与卸载等功能的工具,当前是python中比较主流的管理工具. pip下载安装包的概述 pip工具的本质通 ...
- Python的包管理工具Pip
接触了Ruby,发现它有个包管理工具RubyGem非常好用,而且有非常完备的文档系统http://rdoc.info 发现Python下也有相同的工具,包含easy_install和Pip.只是,我没 ...
- Java基础-Eclipse第三方安装包管理工具之Maven
Java基础-Eclipse第三方安装包管理工具之Maven 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 玩过Linux的小伙伴应该都知道yum吧,我们只要把搭建好的yum仓库配 ...
- Pipenv – 超好用的 Python 包管理工具
pipenv 是什么 pipenv 是 python 官方推荐的包管理工具,集成了 virtualenv.pyenv 和 pip 三者的功能于一身,类似于 php 中的 composer. 我们知道, ...
- Python 包管理工具解惑
本文转载自http://zengrong.net/post/2169.htm,感谢原作者. 一.困惑 作为一个 Python 初学者,我在包管理上感到相当疑惑(嗯,是困惑).主要表现在下面几个方面: ...
- Helm包管理工具(简介、安装、方法)
认识Helm 每次我们要部署一个应用都需要写一个配置清单(维护一套yaml文件),但是每个环境又不一样.部署一套新的环境成本是真的很高.如果我们能够使用类似于yum的工具来安装我们的应用的话那就太好了 ...
- 使用 EthPM 包管理工具
使用 EthPM 包管理工具 EthPM 是 Ethereum 提供的软件包注册表.它遵循ERC190规范来发布和使用智能合约包, 并获得了许多不同的Ethereum开发工具的广泛支持.为了表示我们的 ...
- npm nodejs包管理工具 简介
NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种: 允许用户从NPM服务器下载别人编写的第三方包到本地使用. 允许用户从NPM服务器下载并 ...
- 节省磁盘空间的新一代包管理工具PNPM
在使用前端工具时,yarn.npm都是大家常用的包管理器,但是如果有多个项目使用了同一个依赖的时候,就会在硬盘里保存相应的副本,一旦这个多个项目变得数字很大,那么这个硬盘空间也是会逐渐吓人的. 所以今 ...
最新文章
- 看别人的C/C++代码时发现自己所不知道的语法~
- py-faster-rcnn源码解读系列
- 8.MYSQL:触发器的使用[TRIGGER]
- mysql主主mycat_MySQL数据库主主复制并基于MyCAT实现高可用
- powerdesigner 同步mysql 报错_Win7下PowerDesigner连接mysql,反向工程,导出差异脚本,或直接同步...
- c语言设计成行考核答案,20秋广东开放大学C语言程序设计成性考核参考答案(10页)-原创力文档...
- 谈谈.NET Core IServiceProvider
- uni-app自定义tabBar;uni-app小程序自定义tabBar;uni-app小程序修改中间tabBar导航栏大小;uni-app中间导航栏凸起;uni-app修改底部导航栏
- 从单租户IaaS到多租户PaaS——金融级别大数据平台MaxCompute的多租户隔离实践
- java shiro做页面显示_Java-Shiro(八):Shiro集成SpringMvc、Themeleaf,如何实现Themeleaf视图引擎下解析*.html中shiro权限验证...
- 素材网站|设计师下半年的工作流程至少减少了一半...
- Aptana Studio 介绍
- 回顾声智科技助力联想智能音箱MINI亮相CES Asia
- java 配对问题_Java中的配对类是什么?
- 实习期将近一月的找工作感想
- 作业3 跟踪分析Linux内核的启动过程
- 智慧农业智能节水灌溉 机井灌溉控制器
- Hello China V1.75版本运行截图
- freemaker导出excel文件使用Excel打不开
- python绘制气象等值线图_用Matplotlib绘制Python等值线图