前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过Luarocks使Lua开发变得容易【Programming】

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

作者头像
Potato
修改2019-12-02 11:22:31
3.9K0
修改2019-12-02 11:22:31
举报
文章被收录于专栏:Opensource翻译专栏

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

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是Luarocks?
  • 什么是编程库?
  • 安装Luarocks
  • 用Luarocks搜索代码库
  • 用 luarlocks 安装一个库
  • 获取已安装rock的信息
  • 获取已安装rock的列表
  • 移除rock
  • Luarocks 很棒
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档