如何安装额外的Lua模块以使用wrk

5
我正在使用Mac OSX操作系统。我已经通过Brew和Luarocks安装了Lua,并且已经安装了lua sockets包。
当我在终端Lua命令行界面中调用local http = require("socket")时,模块可以正常加载。
但是,当我在我的wrk测试脚本中包含local http = require("socket")时,不仅对于socket模块,而且对于其他模块也会出现错误。它似乎没有使用我的系统上的Lua。
有没有办法为wrk安装依赖模块? package.searchpath( "socket", package.path )返回/usr/local/share/lua/5.2/socket.lua 这是参考错误信息:
scripts/get_call_setup.lua: scripts/get_call_setup.lua:1: module 'socket' not found:
    no field package.preload['socket']
    no file './socket.lua'
    no file '/Users/sak/go/src/personal/wrk/obj/share/luajit-2.0.4/socket.lua'
    no file '/usr/local/share/lua/5.1/socket.lua'
    no file '/usr/local/share/lua/5.1/socket/init.lua'
    no file '/Users/sak/go/src/personal/wrk/obj/share/lua/5.1/socket.lua'
    no file '/Users/sak/go/src/personal/wrk/obj/share/lua/5.1/socket/init.lua'
    no file './socket.so'
    no file '/usr/local/lib/lua/5.1/socket.so'
    no file '/Users/sak/go/src/personal/wrk/obj/lib/lua/5.1/socket.so'
    no file '/usr/local/lib/lua/5.1/loadall.so'
Running 3s test @ https://ccx-courier-stage.adobe.io

它正在/usr/local中查找,因此如果您全局安装了luasocket包(并且是为5.1或luajit),它应该能够找到它。您能否在普通的Lua解释器中打印package.searchpath("socket", package.path)的结果,并将其添加到问题中? - nobody
那个的输出是/usr/local/share/lua/5.2/socket.lua - Sakib
这意味着您为Lua 5.2安装了luasocket,但wrk正在运行luajit(它与5.1兼容)。因此,请在软件包管理器中查找luarocks-5.1数据包或手动安装适用于5.1的luarocks,然后使用该版本(即针对5.1)安装luasocket,应该就可以解决问题了。(或者,手动安装luasocket,我记得它有Makefile选项来选择Lua版本。) - nobody
我明白了。我使用Homebrew安装了它,所以我猜Homebrew使用的是最新版本。 - Sakib
快速搜索结果显示:https://github.com/mesca/homebrew-luarocks/ 这可能是适合您的正确选择。 - nobody
1个回答

1

请确保Luarocks正确配置并且luarocks安装目录在您的路径中。

在终端中,运行以下代码将已安装的库添加到您的路径中。

eval "$(luarocks path)"

然后运行你的代码:

lua myscript.lua

此外,您的软件包已安装在 lua 5.2 上:
package.searchpath( "socket", package.path ) returns /usr/local/share/lua/5.2/socket.lua

但是您使用的是 lua 5.1 版本运行代码:

no file '/usr/local/share/lua/5.1/socket.lua'

安装 lua 5.1 的套接字,然后运行您的代码或使用已安装 lua 5.2 的所有库来运行您的脚本。

lua5.2 myscript.lua

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接