如何使用Luarocks为Lua5.2和5.1安装库?

 wangxin7299b_943 发布于 2023-02-13 14:57

我正在编写一个小的Lua项目并使用Luarocks来安装我的第三方依赖项.我机器上的默认Lua版本是5.2,到目前为止一切正常.

但是,今天我偶然发现了一个令我困惑的问题.我想在Lua 5.1和Luajit上运行我的程序,看看它是否也适用于那些版本,但我很难让Luarocks下载相应版本的依赖项.作为最后的手段,我试图告诉Lua5.1使用Luarocks安装的5.2库(通过将LUA_PATH环境变量设置为相同的值LUA_PATH_5_2)但不幸的是这还不够:我的项目依赖于LuaFileSystem,一个C-基于模块,所以我需要为5.1和5.2安装单独的版本.

如何安装依赖项的5.1和5.2版本,我该怎么办?我是否需要将一些参数传递给luarocks install命令?我是否需要在我的机器上安装多个Luarocks实例?令我困惑的一件事是.luarocks文件夹里面的东西被分类在5.2子文件夹下(〜/ .luarocks/share/lua/5.2 /),这表明可能有办法在兄弟5.1文件夹中安装东西但是在同时只有一个bin文件夹,这表明luarocks一次只能处理一个版本的Lua ...

3 个回答
  • 根据您的参考~/.luarocks/share/lua/5.2/,您似乎正在运行Unix系统(Linux或Mac).您可以为Lua 5.1和Lua 5.2安装最新版本的LuaRocks两次,如下所示:

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

    再次为5.2:

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

    这会让你/usr/local/bin/luarocks-5.1/usr/local/bin/luarocks-5.2.如果您在/ usr/local /中安装了Lua 5.1和5.2,并且每个人都将使用自己~/.luarocks/lib/luarocks/rocks-5.x/的用户树条目(以及/usr/local/lib/luarocks/rocks-5.x系统树),并将模块安装到正确的位置/usr/share/lua/5.x/~/.luarocks/share/lua/5.x/(同样适用于lib) .

    2023-02-13 14:59 回答
  • 正如moteus所说,我决定为Lua 5.1安装第二版Luarocks.但他正在使用Windows而我正在使用Linux,所以这就是我所做的:

    在Luarocks网站上下载最新版Luarocks的源代码

    从源目录中运行./configure脚本:

    /configure --prefix="${HOME}/.luarocks51" --lua-suffix=5.1

    前缀设置告诉Luarocks将其东西放在.luarocks51文件夹中,.luarocks在我安装的Luarocks 5.2 的现有文件夹旁边.lua-suffix参数告诉Luarocks在我的机器(5.2)中使用Lua 5.1而不是默认的lua版本.这取决于我为Lua 5.1命名解释器lua5.1(Debian安装了我的/usr/bin/lua5.1).最后,Luarocks成功地自动检测了5.1头文件和库的安装位置(/usr/include/lua5.1/)但如果​​没有,我想我可以使用--with-lua-include--with-lua-lib参数指定它.

    编译Luarocks与 make

    安装它make isntall(因为我在本地目录中安装它所以不需要Sudo).

    配置我的5.1环境以使用Luarocks下载的库.我在.bashrc中添加了以下内容:

    export PATH=$PATH:~/.luarocks/bin:~/.luarocks51/bin
    export LUA_CPATH=";;${HOME}/.luarocks51/lib/lua/5.1/?.so"
    export LUA_PATH=";;${HOME}/.luarocks51/share/lua/5.1/?.lua;${HOME}/.luarocks51/share/lua/5.1/?/init.lua"
    
    export LUA_CPATH_5_2=";;${HOME}/.luarocks/lib/lua/5.2/?.so"
    export LUA_PATH_5_2=";;${HOME}/.luarocks/share/lua/5.2/?.lua;${HOME}/.luarocks/share/lua/5.2/?/init.lua"
    

    5.1配置也适用于Luajit.

    Luarocks 5.1版本的可执行文件命名为luarocks-5.1:

    luarocks-5.1 install lfs
    

    2023-02-13 14:59 回答
  • 这就是我这样做的方式. https://gist.github.com/moteus/6823437 我的英语不是很好.但我认为这可能有用.

    2023-02-13 14:59 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有