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

Lua cannot find installed luarocks on Ubuntu

我安装 luarocks:

$ sudo apt-get install luarocks

我通过 luarocks 安装 lua-cjson:

$sudo luarocks install lua-cjson

显示包:

$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

错误是什么??

问题似乎是 luarocks 默认安装了 Lua 5.1 的东西(这是使用 apt-get 安装它时的行为)。如果您不介意使用 Lua 5.1,您可以直接使用它(通过键入 lua5.1),并且 require "cjson" 应该可以正常工作。

如果你真的想要 Lua 5.2 的 cjson,那就有点复杂了。首先,您需要确保您拥有 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