Lua не может найти установленные luarocks на Ubuntu

Я устанавливаю luarocks:

$ sudo apt-get install luarocks

Я устанавливаю lua-cjson от luarocks:

$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 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 ответ

Решение

Кажется, проблема в том, что 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 здесь Извлечь и cd в каталог в терминале.

Затем выполните следующие команды (из этого поста)

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

Это установит версию luarocks который работает с Lua 5.2. Вы можете установить cjson с помощью

sudo luarocks-5.2 install lua-cjson

Вы должны быть в состоянии использовать cjson в Lua 5.2.

Другие вопросы по тегам