创建自定义版本的 luarocks 的步骤
Posted
技术标签:
【中文标题】创建自定义版本的 luarocks 的步骤【英文标题】:Steps to create a custom version of a luarocks 【发布时间】:2019-02-14 07:31:44 【问题描述】:我需要自定义一个 luarocks 库。
假设我使用以下方式安装它:
sudo luarocks install lua-abc
如果我想要这个库的内部自定义版本,如何将它添加到我的 openresty 服务器?
luarocks 是否只是从 github 下载代码,然后将其保存到特定文件夹? (如果是,哪个文件夹?)
【问题讨论】:
【参考方案1】:这取决于,如果包包含任何 C 库形式的外部依赖项,那么它会下载文件并编译它们并复制到 default 路径中。 通常默认路径是:
外部 C 库/usr/local/lib/lua/5.*
库/usr/local/share/lua/5.*
石头被下载到/usr/local/lib/luarocks/rocks/
【讨论】:
所以这意味着 openresty 将在 /lsr/local/lib/luarocks/rocks 路径文件中查找您需要的文件,例如:local http = require "resty.http"
?
/lsr/local/lib/luarocks/rocks
仅用于存储rock文件和安装目的
@Blankman 顺便问一下,您想创建一个新的自定义 lua rock 还是自定义当前安装的版本以满足您的需要?
我想自定义一个 lua 岩石。然后我想在我的服务器上获取我的自定义版本。我复制了 lua 岩石,对其进行了自定义,但是当我推送到我的服务器时,我注意到我没有像 resty.http 这样的依赖项
@Blankman 您是否尝试将依赖项添加到您的 rockspec 文件中?【参考方案2】:
LuaRocks 在使用你自己的可执行文件名和你的编译器 CC 时真的很狡猾。像 cmake 这样的依赖项需要运行 LuaRocks 下载 C 和 C++ 源以编译成共享库,例如 LuaSocket 会生成一个文件core.so
,这需要将执行驻留在 .so 文件中的luaopen_libluasocket(lua_State* L);
函数。
为了让我将 LuaRocks 与 LuaConsole 一起使用(我的 lua.c 替代 CLI 应用程序,很快将成为 luac.c),我必须在安装后修改实际文件。这是链接:https://github.com/tilkinsc/LuaConsole/wiki/LuaRocks-Support-Linux-GCC
基本上,要点是:LuaRocks 默认为开发人员的用例而不是普通的 gi-joe。所以继续运行你的./configure
,我不确定它是否支持--prefix=XXX
但是你需要编辑site_config_x_x.lua
文件以添加site_config.LUA_INTERPRETER=[[luaw]] -- name of lua interpreter
,同时将实际调用切换到luarocks shell 内的解释器脚本。此处可以更好地解释该特定部分:@ 987654322@ 我确实做到了@ 987654330@ 而不是他们所做的任何事情......并且 %* 也就是所有参数,也就是传递所有参数。
在这一切都说完了之后,你的任务是设置 LUA_CPATH 和 LUA_PATH 来搜索你的文件。它会根据安装而改变,但找到它的命令是luarocks path --bin
,它将它转储出去。如果需要,您可以将其添加到 LUA_INIT env var,但我在 Windows 上并使用以下方法动态设置我自己的路径变量:https://gist.github.com/tilkinsc/f6718ca61d76085b064c3dca02f96017 或者,您可以自己设置 package.path 和 package.cpath...但我不推荐。
LuaRocks 一旦你开始工作就很棒了:D
【讨论】:
【参考方案3】:sudo apt-get install build-essential
cd /usr/local/src/
从Browse Here下载所需的版本
tar -xvf luarocks-3.2.1.tar.gz
cd luarocks-3.2.1
./configure
make build
sudo make install
【讨论】:
以上是关于创建自定义版本的 luarocks 的步骤的主要内容,如果未能解决你的问题,请参考以下文章