Lua cannot find installed luarocks on Ubuntu
Asked Answered
W

1

5

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??

Womanly answered 29/9, 2016 at 2:51 Comment(0)
P
8

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.

Pomelo answered 29/9, 2016 at 3:54 Comment(1)
Thanks for this solution! This really helps with the installation of the correct luarocks version, as the default in Ubuntu 18.04 is still outdated and uses Lua 5.1Concordant

© 2022 - 2024 — McMap. All rights reserved.