使用luarocks为lua5.2安装库

这么做的理由:由于centos默认安装的是lua5.1,使用yum install luarocks安装luarocks时默认使用lua5.1,导致luarocks安装的库无法在lua5.2中使用。

一、下载:

在 http://luarocks.org/releases/ 页面选择需要的软件包版本。

或者使用命令:

wget http://luarocks.org/releases/luarocks-3.1.1.tar.gz

二、安装:

创建安装目录: mkdir /usr/local/luarocks

移动压缩包到安装目录:

mv luarocks-3.1.1.tar.gz /usr/local/luarocks/
cd /usr/local/luarocks/

解压:

tar -xvf luarocks-3.1.1.tar.gz

cd luarocks-3.1.1/

找到lua5.2安装路径下的lua.h的位置:    

[root@instance-k9hjceoj luarocks]# find / -name "lua.h"
/usr/local/lua/lua-5.2.4/src/lua.h
/usr/include/lua.h

我的路径是: /usr/local/lua/lua-5.2.4/src/lua.h

在usr/local/luarocks/luarocks-3.1.1下执行:

./configure --prefix=/usr/local/luarocks/luarocks-3.3.1 --with-lua-include=/usr/local/lua/lua-5.2.4/src --lua-version=5.2 --versioned-rocks-dir      

其中,predix是指定LuaRocks 安装路径, with-lua-include指定lua文件位置,lua-version是指定lua的版本。

编译:

make bootstrap

安装完成。

三、测试:

[root@instance-k9hjceoj luarocks-3.3.1]# lua
Lua 5.2.4  Copyright (C) 1994-2015 Lua.org, PUC-Rio
> require("lfs")
stdin:1: module 'lfs' not found:
        no field package.preload['lfs']
        no file '/usr/local/share/lua/5.2/lfs.lua'
        no file '/usr/local/share/lua/5.2/lfs/init.lua'
        no file '/usr/local/lib/lua/5.2/lfs.lua'
        no file '/usr/local/lib/lua/5.2/lfs/init.lua'
        no file './lfs.lua'
        no file '/usr/local/lib/lua/5.2/lfs.so'
        no file '/usr/local/lib/lua/5.2/loadall.so'
        no file './lfs.so'
stack traceback:
        [C]: in function 'require'
        stdin:1: in main chunk
        [C]: in ?

解决办法:

找到已安装的lfs.so库的路径,并为此库创建软连接到指定目录,或者将此库拷贝草指定目录下:

[root@instance-k9hjceoj luarocks-3.3.1]# find / -name lfs.so
/usr/local/luarocks/luarocks-3.3.1/lua_modules/lib/lua/5.2/lfs.so
/usr/lib64/lua/5.2/lfs.so
[root@instance-k9hjceoj luarocks-3.3.1]# ln -s /usr/local/luarocks/luarocks-3.3.1/lua_modules/lib/lua/5.2/lfs.so /usr/local/lib/lua/5.2/lfs.so

再次测试OK:

[root@instance-k9hjceoj luarocks-3.3.1]# lua
Lua 5.2.4  Copyright (C) 1994-2015 Lua.org, PUC-Rio
> require("lfs")
> print(lfs.currentdir())    //打印当前目录
/usr/local/luarocks/luarocks-3.3.1

 

你可能感兴趣的:(luarock)