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

Ale*_*rev 5 lua luarocks cjson

我安装 luarocks:

$ sudo apt-get install luarocks
Run Code Online (Sandbox Code Playgroud)

我通过 luarocks 安装 lua-cjson:

$sudo luarocks install lua-cjson
Run Code Online (Sandbox Code Playgroud)

显示包:

$luarocks list

Installed rocks:
----------------
lua-cjson
   2.1.0-1 (installed) - /usr/local/lib/luarocks/rocks
Run Code Online (Sandbox Code Playgroud)

所以,我看到包:

$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
Run Code Online (Sandbox Code Playgroud)

但是,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
Run Code Online (Sandbox Code Playgroud)

这是什么错误??

fak*_*dad 8

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

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

sudo apt-get install liblua5.2-dev
Run Code Online (Sandbox Code Playgroud)

然后在luarocks 这里下载最新版本的源代码。解压cd到终端中的目录。

然后执行以下命令(来自这篇文章

./configure --lua-version=5.2 --versioned-rocks-dir
make build
sudo make install
Run Code Online (Sandbox Code Playgroud)

这将安装一个luarocks适用于 Lua 5.2的版本。然后您可以cjson使用安装

sudo luarocks-5.2 install lua-cjson
Run Code Online (Sandbox Code Playgroud)

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