2016-09-29 11 views
1

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

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

Что это ошибка ??

ответ

2

Проблема заключается в том, что 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 

Затем загрузить последнюю версию исходного кода для luarockshere. Extract и cd в каталог в терминале.

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

./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.