通过Luarocks使Lua开发变得容易【Programming】

2019-12-02 11:22:31 浏览数 (1)

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 非常适合作为它的包管理器。 现在就试一试吧!

0 人点赞