配置Lua';s加载路径

配置Lua';s加载路径,lua,Lua,因此,我从Centos 7软件包档案中安装了Lua 5.1.4,并从他们的网站上安装了Luarocks 2.2.2。我尝试通过luarocks安装luacurl安装luacurl。它在/usr/local/lib/lua/5.1、/usr/local/lib/luarocks/rocks和/usr/local/share/lua/5.1之间拆分文件。我不知道应该向lua包路径添加什么,或者您应该如何配置它 >lua-e'打印(package.path) /?.lua/usr/share/lua/

因此,我从Centos 7软件包档案中安装了Lua 5.1.4,并从他们的网站上安装了Luarocks 2.2.2。我尝试通过
luarocks安装luacurl
安装luacurl。它在
/usr/local/lib/lua/5.1
/usr/local/lib/luarocks/rocks
/usr/local/share/lua/5.1
之间拆分文件。我不知道应该向lua包路径添加什么,或者您应该如何配置它

>lua-e'打印(package.path)

/?.lua/usr/share/lua/5.1/?.lua/usr/share/lua/5.1/?/init.lua/usr/lib64/lua/5.1/?.lua/usr/lib64/lua/5.1/?/init.lua

但是当我试图
要求(“luacurl”)
时,我得到以下错误消息

stdin:1: module 'luacurl' not found:
    no field package.preload['luacurl']
    no file './luacurl.lua'
    no file '/usr/share/lua/5.1/luacurl.lua'
    no file '/usr/share/lua/5.1/luacurl/init.lua'
    no file '/usr/lib64/lua/5.1/luacurl.lua'
    no file '/usr/lib64/lua/5.1/luacurl/init.lua'
    no file './luacurl.so'
    no file '/usr/lib64/lua/5.1/luacurl.so'
    no file '/usr/lib64/lua/5.1/loadall.so'
lua软件包所遵循的标准是否有很好的参考?试图要求指向我的
luacurl.so
文件实际所在位置的绝对路径似乎不起作用

module '/usr/local/lib/lua/5.1/luacurl.so' not found:
    no field package.preload['/usr/local/lib/lua/5.1/luacurl.so']
    no file './/usr/local/lib/lua/5/1/luacurl/so.lua'
    no file '/usr/share/lua/5.1//usr/local/lib/lua/5/1/luacurl/so.lua'
    no file '/usr/share/lua/5.1//usr/local/lib/lua/5/1/luacurl/so/init.lua'
    no file '/usr/lib64/lua/5.1//usr/local/lib/lua/5/1/luacurl/so.lua'
    no file '/usr/lib64/lua/5.1//usr/local/lib/lua/5/1/luacurl/so/init.lua'
    no file './/usr/local/lib/lua/5/1/luacurl/so.so'
    no file '/usr/lib64/lua/5.1//usr/local/lib/lua/5/1/luacurl/so.so'
    no file '/usr/lib64/lua/5.1/loadall.so'
    no file './/usr/local/lib/lua/5.so'
    no file '/usr/lib64/lua/5.1//usr/local/lib/lua/5.so'
    no file '/usr/lib64/lua/5.1/loadall.so'

这里完全可能不适合使用
require
函数。

Lua中有两种类型的require路径:package.path用于纯Lua库(.Lua),package.cpath用于编译库(.so)

如果您知道luacurl.so位于何处($whereis luacurl.so),则可以如下修改您的cpath:

package.cpath = package.cpath .. ";/usr/local/lib/lua/5.1/?.so"

或者luacurl.so所在的任何地方。只需阅读有关格式的文档(;is separator,?是您在require参数中传递的内容,uu转换为/)

Luarock将自己安装在默认路径中。在需要任何Luarock之前,请执行以下操作:

require 'luarocks.loader'
这将修改
require
,以便在Luarock安装位置查找Luarock

如果Lua代码应在不同的系统上运行,其中一些系统使用Luarock,而其他系统已将库安装在默认搜索路径中,则可能需要执行以下操作:

pcall( require, 'luarocks.loader' )

这将允许require在未安装Luarock时以静默方式失败,并继续使用require的默认搜索路径。

ln-s/usr/local/share/lua/usr/share/lua
因此,似乎我缺少了一些东西,我的问题非常需要清理
require“/usr/local/lib/lua/5.1/libcurl。因此,
似乎没有将路径解释为绝对路径,我收到了一条非常类似的错误消息。创建一个符号链接的老鼠窝以使我的lua文件夹排列在正确的位置似乎不是一个站得住脚的解决方案。(另外,我认为你的意思是
ln-s/usr/local/share/lua/usr/share
package.cpath
实际上适用于任何已编译的库,因此您也可以将其用于“Doze”上的
.dll
s(Cygwin,将两者混合使用,会很有趣)。。。