业界动态
【Lua】Lua包管理器-LuaRocks的使用教程
2025-01-03 06:16


lua的包管理工具是LuaRocks。本文内容基于MacOS系统。

 
 

参考官方文档:Using LuaRocks

可用的模块在luarocks官网搜索即可。例如现在我们安装一个模块。

 

注意:不知道是故意为之,还是因为有。在的安装目录(以及任意子目录)执行命令,和在其它目录下执行命令时,产生的行为并不一致。例如

  • 在安装目录下执行,模块会被安装到;而在其它目录执行此命令,模块会被安装到。具体的子路径则都符合rock的树结构。

  • 执行命令,可以得到适用于lua的模块搜索路径规则(稍后会讲到)。然而只有在的安装目录中执行此命令,得到的规则中才会包含匹配路径的项。

  • 就像这两种目录对应了两个不同的环境一样。我提了一个issue询问此现象。

如果你并不是在安装目录下执行的模块安装命令,那么现在就可以直接在lua代码中使用成功使用此模块了。

注意,通常模块安装命令中使用的模块名就是在lua代码中用加载时填写的模块名,但也有一些例外的模块。比如在加载时的模块名是,即要使用,而不是。

2.1 分析

为什么直接就可以使用,这么简单?作为一个经常遭到"挑战"的程序员,你可能原本已经做好了"和大战三百回合,不破终不还"的准备,结果没想到刀还没拔出来,敌人就吓跑了。如果你一时接受不了这么简单的战斗,那么可以继续阅读,识破的诡计~
(非战斗人员请迅速撤离)

注意:继续阅读需要对Lua的模块加载知识有一定的基础了解,如果有需要的话,可以在评论区留言,我会抽时间整理一篇关于Lua模块加载的文章,你也点击CSDN文末的推广码,我很乐意分享这些知识。

其实这是因为将模块安装在了,具体见luarocks树结构。而这个树结构恰好匹配了和的默认规则。

 

但是,如果你是在安装目录下执行的模块安装命令,就会像一开始说的那样,模块会被安装在,这并不在或的默认规则中。

因此,需要手动配置或,或者或环境变量。按照惯例,前两个环境变量专门用来配置模块,后两个专门用来配置C模块()。

注意,以下对环境变量的设置命令,只在当前shell会话有效,然后你可以通过执行命令开启命令行交互模式使用lua,运行验证是否成功。如果想要永久设置环境变量,应该把它们写到shell的启动文件中,可以写到,可以写到。
如果对shell的这些基础知识感兴趣,可以阅读我的另一篇博客(篇幅较长):【Linux基础】理解并善用Shell – Shell精讲

于是我们可以配置

 

但此时你若是尝试使用,会发现依然报错。仔细观察报错信息可以发现:其实已经找到了,报错的原因是,中还了其它的模块。结合luarocks树结构观察模块的安装目录,以及中的,会发现其实是没有被加载到。所以还需要配置

 

然后再尝试,就可以啦。

2.2

其实,luarocks提供了一种更简单的方式来配置环境变量。

luarocks提供了一种半自动化的方式:命令。此命令能够打印出适合当前平台的、用于设置环境变量的命令。
并且,此命令得到的模块搜索路径规则中,会包含默认规则;另外还有一个,也会拼接原有的。因此不必担心自己的环境会被覆盖。

 

然后通过****命令,就可以一键设置环境变量。注意,此命令只在当前shell会话有效,如果想要永久有效,需要把此命令写到shell启动文件中。

但正如一开始所说,命令在不同目录下产生的行为并不一致。只有在安装目录(及其任意子目录)下执行,得到的规则中才会包含匹配路径的项。而现在我们之所以需要配置环境变量,就是因为luarocks安装的模块不在默认目录下,而是在目录下。

所以,我们必须在shell启动文件中使用这种方式配置环境变量

 

然后尝试,Bingo!

至此,战斗结束,你就可以对宣布:KO🎉🎉🎉


查看模块信息描述:查看已安装模块的信息描述。

 

移除模块

 
 

luarocks存在两点问题

  1. 一些模块安装时的名字和应该使用的名字不一致。如 ->
  2. luarocks没有提供模块的多版本管理功能。(我没有找到有关的描述)

这在协同开发、长期开发时,会有些困难。

  1. 我是否需要在项目中添加一个文件来介绍项目使用了哪些模块
  2. 由于没有版本管理,可能团队中的每个人在不同时间安装到的是不同版本的模块,因此,我是否应该把模块放到项目目录下
    以上就是本篇文章【【Lua】Lua包管理器-LuaRocks的使用教程】的全部内容了,欢迎阅览 ! 文章地址:https://sicmodule.kub2b.com/news/15080.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 https://sicmodule.kub2b.com/mobile/ , 查看更多   
最新文章
手机单扬声器和双扬声器有什么区别?原来差别这么大手机扬声器「手机单扬声器和双扬声器有什么区别?原来差别这么大」
随着手机的普及和发展,音频体验成为消费者选择手机的重要因素之一。而在手机音频方面,单扬声器和双扬声器是常见的设计方案。那
手机维修知识大全维修手机「手机维修知识大全」
修理手机维修知识大全手机是高科技精密电子产品。工作原理、制造工艺、软件和硬件、测试、技术标准在所有的电器设备中是最复杂的
2k分辨率手机有哪些(2k分辨率的手机哪款性价比最高)
  关于《2K分辨率手机有哪些》的文章  随着科技的不断发展,手机已经成为了我们日常生活中不可或缺的一部分。而在手机的各种
红手指云手机苹果版(红雀浏览器) v1.0.23 iPhone版红手指云手机「红手指云手机苹果版(红雀浏览器) v1.0.23 iPhone版」
红手指手游专用虚拟手机是一款非常实用的手机挂机软件,在这里玩家随时随地离线挂机、自动帮助你闯关升级,非常强大的游戏挂机神
1手机2(一加11手机)
  《手机2》:探索科技与生活的无限可能  在当今数字化时代,智能手机无疑是我们生活中不可或缺的一部分。随着科技的飞速发
手机NFC是什么?怎么使用?手机nfc「手机NFC是什么?怎么使用?」
但很多人不知道的是,除了这三种无线通信技术外,很多智能手机里还有一种无线通信技术,那就是NFC。2004年,飞利浦半导体,诺基
360手机 官网(360手机官网入口)
  探索《360手机官网》:一站式手机技术与服务的平台  在当今数字化时代,手机已经成为我们日常生活中不可或缺的一部分。而
关于手机电池的冷知识:机身温度过高,会永久降低手机电池容量手机电量「关于手机电池的冷知识:机身温度过高,会永久降低手机电池容量」
相信大家在日常使用手机时,最关注的就是我们手机的电量还剩多少,尤其是现在我们一般出门都不带现金,直接通过手机进行支付,所
260手机助手(360手机助手官方版下载)
  《260手机助手》:一站式手机管理和服务的新选择  随着智能手机的普及,我们的生活越来越离不开手机。为了更好地管理和优
小米发布迄今最强被动散热系统,两倍于VC散热,原神满帧运行手机散热「小米发布迄今最强被动散热系统,两倍于VC散热,原神满帧运行」
你的手机“烫”吗? 玩局游戏,瞬间化身暖手宝?拍拍视频就过热,需要“冷静”一下才能继续使用!充电是很快,温度升的也很快…