Luarlocks 使得开始使用 Lua 变得很容易,Lua 是一个轻量级的、高效的、可嵌入的脚本语言。
Bash太基础了?Python中的空格太多了?Go太公司化了?
你应该试试Lua,它是一个轻量级的、高效的、可嵌入的开发脚本语言,支持程序编程、面向对象程序设计、函数式编程、数据驱动编程和数据描述。最棒的是,它使用了明确的语法作用域!
Lua也很小。Lua的源代码仅为24,000行C,使用所有标准Lua库构建的Lua解释器(在64位Linux上)为247K,而Lua库为421K。
您可能会认为,这么小的语言必须过于简单,无法完成任何实际工作,但实际上Lua拥有大量的第三方库(包括GUI工具包),它广泛用于3D着色器的视频游戏和电影制作中,并且是视频游戏引擎的通用脚本语言。为了使Lua入门更加容易,甚至还有一个名为Luarocks的软件包管理器。
什么是Luarocks?
Python具有PIP,Ruby具有Gems,Java具有Maven,Node具有npm,Lua具有Luarocks。Luarocks是一个网站和一个命令。该网站是开放源代码库的所在地,可供程序员添加到其Lua项目中。该命令搜索站点并根据需要安装库(定义为“rocks”)。
什么是编程库?
如果您是编程的新手,您可能会认为library只是存储书籍的地方。编程库(简称“lib”或“libs”)有点像书库,因为这两种东西都包含其他人已经努力发现的信息,并且您可以借用这些信息,因此您无需做太多工作工作。
例如,如果您编写的代码测量的是特殊聚合物在断裂前可以承受的压力,那么您可能会认为自己必须精通数学。但是,如果已经有一个专门针对这种计算而设计的开源库,那么您可以将该库包含在代码中,并让它为您解决该问题(前提是您为库的内部函数提供了所需的数字,以便执行准确的计算)。
在开源编程中,您可以自由安装库并随意使用其他人的作品。Luarocks是Lua的一种机制,它使查找和使用Lua库变得容易快捷。
安装Luarocks
使用Luarocks网站上的软件包实际上并不需要 luarocks命令,但是它确实使您不必离开文本编辑器而进入[存在潜在的干扰的]万维网。 要安装Luarocks,首先需要安装Lua。
可以从lua.org或从Linux上的发行版的软件存储库中获得Lua。 例如,在Fedora,CentOS或RHEL上:
代码语言:javascript复制 $ sudo dnf install lua
在Debian和Ubuntu上:
代码语言:javascript复制 $ sudo apt install lua
在Windows和Mac上,您可以从网站下载并安装Lua。
一旦安装了Lua,请安装Luarocks。 如果您使用的是Linux,则在发行版本的存储库中可以使用luarocks命令。
在Mac上,您可以使用Brew进行安装或从源代码进行编译:
代码语言:javascript复制 $ wget https://luarocks.org/releases/luarocks-X.Y.Z.tar.gz
$ tar zxpf luarocks-X.Y.Z.tar.gz
$ cd luarocks-X.Y.Z
$ ./configure; sudo make bootstrap
在Windows上,按照Luarocks Wiki上的安装说明进行操作。
用Luarocks搜索代码库
从用户而不是开发人员的角度来看, luarocks命令的典型用法包括搜索要运行的某些Lua应用程序所需的库并安装该库。
要搜索Lua软件包luasec (一个为luarocks提供HTTPS支持的库 ),请尝试以下命令:
代码语言:javascript复制 $ luarocks search luasec
Warning: falling back to curl -
install luasec to get native HTTPS support
Search results:
===============
Rockspecs and source rocks:
---------------------------
luasec
0.9-1 (rockspec) - https://luarocks.org
0.9-1 (src) - https://luarocks.org
0.8.2-1 (rockspec) - https://luarocks.org
[...]
用 luarlocks 安装一个库
要安装 luasec 库:
代码语言:javascript复制 $ luarocks install --local luasec
[...]
gcc -shared -o ssl.so -L/usr/lib64
src/config.o src/ec.o src/x509.o [...]
-L/usr/lib -Wl,-rpath,/usr/lib: -lssl -lcrypto
luasec 0.9-1 is now installed in
/home/seth/.luarocks (license: MIT)
您可以在本地或系统范围内安装Lua库。本地安装表明您可以使用安装的Lua库,但不能使用计算机的其他用户。如果你和其他人共享你的计算机,并且你们每个人都有自己的登录帐户,那么你可能想要安装一个软件库系统。但是,如果您是计算机的唯一用户,那么在本地安装库是一个好习惯,因为在使用Lua开发时,这是一种合适的方法。
如果您正在开发Lua应用程序,那么您可能希望将库安装到项目目录中。用Luarocks的术语来说,这是一棵树。本地安装库时的默认树是$HOME/。但你可以随意重新定义它。
代码语言:javascript复制 $ mkdir local
$ luarocks --tree=./local install cmark
Installing https://luarocks.org/cmark-0.YY.0-1.src.rock
gcc -O2 -fPIC -I/usr/include -c cmark_wrap.c [..]
gcc -O2 -fPIC -I/usr/include -c ext/blocks.c -o ext/blocks.o [..]
[...]
No existing manifest. Attempting to rebuild...
cmark 0.29.0-1 is now installed in
/home/seth/downloads/osdc/example-lua/./local
(license: BSD2)
库(在本例中为 cmark 库)被安装到 -- tree 选项指定的路径中。 您可以通过列出目的地址的内容来验证它:
$ find ./local/ -type d -name "cmark" ./local/share/lua/5.1/cmark ./local/lib/luarocks/rocks/cmark
通过定义 package.path 变量指向本地 rocks 目录,可以在 Lua 代码中使用该库:
package.path = package.path .. ';local/share/lua/5.3/?.lua' require("cmark")
获取已安装rock的信息
你可以通过显示选项查看已安装岩石的信息:
代码语言:javascript复制 $ luarocks show luasec
LuaSec 0.9-1 - A binding for OpenSSL library
to provide TLS/SSL communication over LuaSocket.
This version delegates to LuaSocket the TCP
connection establishment between
the client and server. Then LuaSec uses this
connection to start a secure TLS/SSL session.
License: MIT
Homepage: https://github.com/brunoos/luasec/wiki
Installed in: /home/seth/.luarocks
[...]
这将为您提供一个从用户角度出发的库提供的内容的摘要,显示项目主页以备进一步调查之用,并显示库安装在哪里。在这个示例中,它安装在我的home目录中的。Luarlocks文件夹。这保证了它是本地安装的,这意味着如果我将我的主目录迁移到另一台计算机,我将保留我的luarlocks配置和安装。
获取已安装rock的列表
你可以使用 list 选项列出系统上所有已安装的rock:
代码语言:javascript复制 $ luarocks list
Installed rocks:
----------------
luasec
0.9-1 (installed) - /home/seth/.luarocks/lib/luarocks/rocks
luasocket
3.0rc1-2 (installed) - /home/seth/.luarocks/lib/luarocks/rocks
luce
scm-0 (installed) - /home/seth/.luarocks/lib/luarocks/rocks
tekui
1.07-1 (installed) - /home/seth/.luarocks/lib/luarocks/rocks
这将显示您在默认安装位置安装的rock。开发人员可以通过使用--tree选项重新定义活动树来覆盖这个选项。
移除rock
如果你想移动rock,你可以用 luarlocks 选项来做:
代码语言:javascript复制 $ luarocks remove --local cmark
这将从本地树中删除一个库(在本例中为cmark库)。开发人员可以通过使用--tree选项重新定义活动树来覆盖这个选项。
如果要删除所有已安装的rock,请使用“purge”选项。
Luarocks 很棒
无论你是一个正在探索令人兴奋的新 Lua 应用程序并需要安装一些依赖项的用户,还是一个使用 Lua 来创建令人兴奋的新应用程序的开发人员,luarlocks 都使你的工作变得简单。 Lua 是一种优美而简单的语言,luarlocks 非常适合作为它的包管理器。 现在就试一试吧!