这么做的理由:由于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