I install luarocks:
$ sudo apt-get install luarocks
I install lua-cjson by luarocks:
$sudo luarocks install lua-cjson
show packages:
$luarocks list
Installed rocks:
----------------
lua-cjson
2.1.0-1 (installed) - /usr/local/lib/luarocks/rocks
So, I see package:
$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
But, Lua can't see the module:
$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
What it is the error??
LuaRocks is a package manager for the Lua programming language that provides a standard format for distributing Lua modules (in a self-contained format called a "rock"), a tool designed to easily manage the installation of rocks, and a server for distributing them.
The problem seems to be that luarocks by default installs things for Lua 5.1 (this is the behavior if you installed it using apt-get). If you don't mind using Lua 5.1, you can just use that instead (by typing lua5.1), and require "cjson" should work fine.
If you really want cjson for Lua 5.2, it's a bit more complicated. First, you need to make sure that you have the development files for Lua 5.2. Try
sudo apt-get install liblua5.2-dev
Then download the latest version of the source for luarocks here. Extract, and cd to the directory in a terminal.
Then do the following commands (from this post)
./configure --lua-version=5.2 --versioned-rocks-dir
make build
sudo make install
This will install a version of luarocks which works with Lua 5.2. You can then install cjson using
sudo luarocks-5.2 install lua-cjson
You should then be able to use cjson in Lua 5.2.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With