Lua在Ubuntu上找不到已安装的luarocks

时间:2016-09-29 02:51:12

标签: lua luarocks cjson

我安装了luarocks:

$ sudo apt-get install luarocks

我通过luarocks安装lua-cjson:

$sudo luarocks install lua-cjson

show packages:

$luarocks list

Installed rocks:
----------------
lua-cjson
   2.1.0-1 (installed) - /usr/local/lib/luarocks/rocks

所以,我看到包装:

$luarocks show lua-cjson

License:    MIT
Homepage:   http://www.kyne.com.au/~mark/software/lua-cjson.php
Installed in:   /usr/local
. . . 
Modules:
    cjson
    lua2json
    json2lua
    cjson.util


    lua-cjson
          2.1.0-1 (installed) - /usr/local/lib/luarocks/rocks

但是,Lua无法看到模块:

$lua
Lua 5.2.3  Copyright (C) 1994-2013 Lua.org, PUC-Rio
> require "cjson"
stdin:1: module 'cjson' not found:
....


$locate cjson.so
 /usr/local/lib/lua/5.1/cjson.so

错误是什么?

1 个答案:

答案 0 :(得分:4)

问题似乎是luarocks默认为Lua 5.1安装内容(如果您使用apt-get安装它,则会出现这种情况)。如果你不介意使用Lua 5.1,你可以改用它(通过输入lua5.1),require "cjson"应该可以正常使用。

如果你真的想要cjson用于Lua 5.2,那就有点复杂了。首先,您需要确保拥有Lua 5.2的开发文件。尝试

sudo apt-get install liblua5.2-dev

然后下载luarocks here的最新版源代码。将cd解压缩到终端中的目录。

然后执行以下命令(来自this post

./configure --lua-version=5.2 --versioned-rocks-dir
make build
sudo make install

这将安装一个与Lua 5.2一起使用的luarocks版本。然后,您可以使用

安装cjson
sudo luarocks-5.2 install lua-cjson

然后,您应该可以在Lua 5.2中使用cjson