使用 Luarocks 轻松进行 Lua 开发

Luarocks 使您能够轻松上手 Lua,Lua 是一种轻量级、高效且可嵌入的脚本语言。
118 位读者喜欢这个。
Coding on a computer

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”)。

什么是编程库?

如果您是编程新手,您可能会认为“库”只是存储书籍的地方。 编程库(简称“lib”或“libs”)有点像图书库,因为这两者都包含其他人已经努力发现的信息,您可以借用这些信息,从而减少您的工作量。

例如,如果您正在编写代码来测量特殊聚合物在断裂之前可以承受多少应力,您可能会认为您必须非常擅长数学。 但是,如果已经有一个专门为这种计算而设计的开源库,那么您可以将该库包含在您的代码中,并让它为您解决该问题(前提是您为该库的内部函数提供执行准确计算所需的数字)。

在开源编程中,您可以自由安装库并随意使用其他人的工作。 Luarocks 是 Lua 的机制,可以快速轻松地查找和使用 Lua 库。

安装 Luarocks

实际上,使用 Luarocks 网站上的软件包不需要 luarocks 命令,但它可以防止您离开文本编辑器并冒险进入全球网络[的潜在干扰]。 要安装 Luarocks,您首先需要安装 Lua。

Lua 可以从 lua.org 获取,或者在 Linux 上,可以从您发行版的软件存储库获取。 例如,在 Fedora、CentOS 或 RHEL 上

$ sudo dnf install lua

在 Debian 和 Ubuntu 上

$ sudo apt install lua

在 Windows 和 Mac 上,您可以从网站下载并安装 Lua。

安装 Lua 后,安装 Luarocks。 如果您使用的是 Linux,则 luarocks 命令可在您发行版的存储库中找到。

在 Mac 上,您可以使用 Brew 安装它,或者从源代码编译

$ 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 支持的库),请尝试以下命令

$ 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
[...]

使用 Luarocks 安装库

要安装 luasec

$ 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/.luarocks,但您可以随意重新定义它。

$ 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")

如果您安装的库已编译,从而生成 .so 文件(Windows 上的 .dll 和 macOS 上的 .dylib),那么您必须添加到您的 cpath 中。 例如,luafilesystem 库提供了文件 lfs.so

package.cpath = package.cpath .. ';local/share/lua/5.3/?.lua'

require("lfs")

获取有关已安装 rock 的信息

您可以使用 show 选项查看有关已安装 rock 的信息

$ 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
[...]

这为您提供了从用户的角度来看库提供的功能的摘要,显示了项目主页,以防您想进一步调查,并向您显示了库的安装位置。 在此示例中,它安装在我主目录中的 .luarocks 文件夹中。 这向我保证它是在本地安装的,这意味着如果我将我的主目录迁移到另一台计算机,我将保留我的 Luarocks 配置和安装。

获取已安装 rocks 的列表

您可以使用 list 选项列出系统上所有已安装的 rocks

$ 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

这将显示您在默认安装位置中安装的 rocks。 开发人员可以使用 --tree 选项重新定义活动树来覆盖此设置。

删除 rock

如果要删除 rock,可以使用 Luarocks 使用 remove 选项执行此操作

$ luarocks remove --local cmark

这将从您的本地树中删除库(在本例中为 cmark 库)。 开发人员可以使用 --tree 选项重新定义活动树来覆盖此设置。

如果要删除您已安装的所有 rocks,请改用 purge 选项。

Luarocks rocks

无论您是探索令人兴奋的新 Lua 应用程序并且需要安装一些依赖项的用户,还是使用 Lua 创建令人兴奋的新应用程序的开发人员,Luarocks 都能让您的工作变得轻松。 Lua 是一种漂亮而简单的语言,Luarocks 非常适合作为它的软件包管理器。 立即尝试一下!

接下来要阅读的内容
标签
Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。 他曾在电影和计算行业工作,并且经常同时从事这两个行业。

2 条评论

你好 Seth,

首先感谢您对 Luarocks 的指导。 但是,我想知道的一件事是,我们是否可以在 CMD 中使用这种方法。 我是 coder side 的忠实粉丝,并且喜欢在 cmd 类型的格式中工作。

此致,
MarkJ(Mark)
https://www.liteblue.buzz

很高兴看到有关 Lua 的好文章。 这是一种被严重低估的语言。 它简单但功能强大。 应该有更多人使用 Lua!

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.