如何调试Luarocks报错
2015-11-28 本文已影响311人
zhoujingk_49
关于Luarocks安装使用
Luarocks在国内的网络环境下,使用并不是那么舒畅,但是由于其江湖地位,在春哥的iresty包管理平台出炉之前,Luarocks仍然是Lua包管理工具的首选。
在之前的文章中,我对Luarocks的安装使用有过详细介绍,感兴趣的同学可以看这里
Luarocks调试报错技巧
--verbose最简单直接
Luarocks所有命令调用的过程都可以通过添加--verbose
参数来查看整个命令运行过程中,执行了那些操作以及操作的输出。
lua -e""�最通用
实例:在使用luarocks upload上传vanilla包的时候,发现一直报错
LuaSec is not available; using plain HTTP. Install 'luasec' to enable HTTPS.
Sending vanilla-0.1.0.rc2-1.rockspec ...
Error: Failed loading socket library!
而执行luarocks list
又能看到自己安装的luasocket
Installed rocks:
----------------
luasocket
3.0rc1-2 (installed) - /usr/local/luarocks-2.2.2/lib/luarocks/rocks
因为在Openresty的环境中,调用luasocket没问题,直觉就没有去怀疑path的问题。左右找不出来为啥,最后github的同学建议命令行执行lua -e"print(require('socket.http'))"
看能否加载,发觉果然不能加载,这下很明确是path的事儿了,package.path/cpath设置后,问题解决。
解决问题后,我梳理了下过程,其实作为包管理工具Luarocks已经相对比较完备,--verbose
已经能解决90%调试问题,Luarocks基于Lua开发,需要调用Lua包,包调用报错可单独执行调用部分代码,也能发现相应的问题。