专栏首页Opensource翻译专栏通过Luarocks使Lua开发变得容易【Programming】

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

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上:

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

用 luarlocks 安装一个库

要安装 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/。但你可以随意重新定义它。

 $ 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的信息

你可以通过显示选项查看已安装岩石的信息:

 $ 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:

 $ 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 选项来做:

 $ luarocks remove --local cmark

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

如果要删除所有已安装的rock,请使用“purge”选项。

Luarocks 很棒

无论你是一个正在探索令人兴奋的新 Lua 应用程序并需要安装一些依赖项的用户,还是一个使用 Lua 来创建令人兴奋的新应用程序的开发人员,luarlocks 都使你的工作变得简单。 Lua 是一种优美而简单的语言,luarlocks 非常适合作为它的包管理器。 现在就试一试吧!

原文链接:https://opensource.com/article/19/11/getting-started-luarocks

原文作者: Seth Kenlon (Red Hat)

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 在Python游戏中模拟重力【Programming(Python)】

    现实世界充满了运动和生活。 使现实世界变得如此繁忙和动态的是物理。 物理是物质在太空中移动的方式。因为电子游戏世界没有物理,它也没有物理,所以游戏程序员必须模拟...

    Potato
  • 汇编程序,编译器和解释器的简短介绍【Programming】

    在计算的早期,硬件很昂贵,而程序员则很便宜。 实际上,程序员是如此廉价,以至于他们甚至都没有被称为“程序员”,实际上通常是称之为数学家或电气工程师。 实际上早期...

    Potato
  • 为什么选择 Rust 作为你的下一个编程语言【Programming】

    为项目选择编程语言通常是一个复杂的决定,尤其是当涉及从一种语言切换到另一种语言时。 对于许多程序员来说,这不仅是一个技术考验,而且是一个深刻的情感抉择。 由于缺...

    Potato
  • IBM新软件为深度学习提供支持

    “supercomputingonline.com”发布消息称,IBM公司正在利用其新软件为深度学习提供支持。 IBM发布了基于Power Systems平台的...

    人工智能快报
  • 【重磅干货】量化系统工程师需要学什么?

    作者2015年博士毕业加入一家量化私募公司,已经做了差不多四年系统工程师的工作。本文是根据这个岗位所用到的日常工作技能总结,希望对想进入这个行业的人有所帮助。由...

    量化投资与机器学习微信公众号
  • 2 驾驭课堂的动力与能力-课堂的磁力

    现在,大学本科教育中,大班额是一种常态,而如何掌控课堂,做一个合格的大学教师,没有那么容易。

    Y大宽
  • PySide——Python图形化界面入门教程(三)

    PySide——Python图形化界面入门教程(三)          ——使用内建新号和槽               ——Using Built-In S...

    ascii0x03
  • Python教程: Python 介绍

         -h                        Display this usage message

    py3study
  • [译]C#和.NET中的字符串

    原文地址:Jon Skeet:Strings in C# and .NET System.String 类型(在C#语言中对应的别名是string)是.NET最...

    潘成涛
  • Python3 字符串操作

    字符串是Python中最基本的数据类型之一,用于表示文本数据。几乎每个应用程序都涉及使用字符串,Python的str类提供了许多方法来简化字符串操作。

    xun珣

扫码关注云+社区

领取腾讯云代金券