推广 热搜: page  关键词  数据分析  链接  服务  搜索引擎  数据分析系统  搜索  获取  小红 

【Lua】Lua包管理器-LuaRocks的使用教程

   日期:2025-01-03     作者:e8ew9    caijiyuan   评论:0    移动:https://sicmodule.kub2b.com/mobile/news/15080.html
核心提示:lua的包管理工具是:LuaRocks。本文内容基于MacOS系统。参考官方文档:Using LuaRocks 可用的模块在luarocks官网搜


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. 由于没有版本管理,可能团队中的每个人在不同时间安装到的是不同版本的模块,因此,我是否应该把模块放到项目目录下
本文地址:https://sicmodule.kub2b.com/news/15080.html     企库往 https://sicmodule.kub2b.com/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

 
 
更多>同类最新资讯
0相关评论

文章列表
相关文章
最新动态
推荐图文
最新资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号