Hi, yuansheng: I start a ubuntu VM in EC2, fully simulated this bug, and I finally understand what you mean.
Let me briefly summarize so that others can better understand the problem: 1. luarocks has its own default search path. This path is related to the version of Lua on the machine. For example, when lua 5.3 is used, then `/usr/share/lua/5.3/` will be the default search path of luarocks. 2. The APISIX code path has one more layer of `lua`, which is `lua/apisix`. So if we wan to be automatically searched by luarocks: `/usr/share/lua/5.3/apisix/init.lua` when `require "apisix.init"`, we must keep the code layer is `apisix/*.lua`, not the `lua/apisix/*.lua`. Thanks, Ming Wen, Apache APISIX Twitter: _WenMing Ming Wen <[email protected]> 于2020年3月6日周五 下午1:59写道: > ok, I see, this PR is WIP > > Thanks, > Ming Wen, Apache APISIX > Twitter: _WenMing > > > YuanSheng Wang <[email protected]> 于2020年3月6日周五 下午1:01写道: > >> On Fri, Mar 6, 2020 at 12:30 PM Ming Wen <[email protected]> wrote: >> > >> > > I think this PR should have resolved this issue. >> > The luarocks install APISIX to `/usr/share/lua/5.3/****`, which is not >> in >> > your search paths. >> >> My goal is to run APISIX without any hard-coded path, that is why I >> removed the `lua` folder. >> >> > >> > > All hard-coded paths are likely to be wrong. >> > but now hard-coded `Lua 5.1` in your PR. >> >> I have deleted `/usr/share/lua/5.1 / ?. lua` and we will delete more >> hard-coded paths later. >> >> > >> > Thanks, >> > Ming Wen, Apache APISIX >> > Twitter: _WenMing >> > >> > >> > YuanSheng Wang <[email protected]> 于2020年3月6日周五 下午12:00写道: >> > >> > > On Fri, Mar 6, 2020 at 11:41 AM Ming Wen <[email protected]> wrote: >> > > > >> > > > back to your first email: >> > > > > I found that the luarocks will install the APISIX to >> > > > `/usr/share/lua/5.3/****`. >> > > > >> > > > the new search path[1] can not reslove this issue, right? >> > > >> > > I think this PR should have resolved this issue. >> > > >> > > At present we all use Lua 5.1 in CI, so we can't see the bug using >> Lua 5.3. >> > > We can run test cases in Luarocks 3 + Lua 5.2 or 5.3. >> > > >> > > All hard-coded paths are likely to be wrong. We should use search >> > > paths provided by standard Lua whenever possible. >> > > >> > > >> > > > >> > > > [1] >> > > > >> > > >> https://github.com/apache/incubator-apisix/pull/1157/files#diff-400bb4a8f273a5c5afddae64632f0a8b >> > > > >> > > > Thanks, >> > > > Ming Wen, Apache APISIX >> > > > Twitter: _WenMing >> > > > >> > > > >> > > > YuanSheng Wang <[email protected]> 于2020年3月6日周五 上午11:36写道: >> > > > >> > > > > On Fri, Mar 6, 2020 at 11:32 AM Ming Wen <[email protected]> >> wrote: >> > > > > > >> > > > > > > So we can see a lot of hard-coded paths, such as: >> > > > > > `/usr/share/lua/5.1/apisix/lua / ?. lua`. >> > > > > > > If we remove the `lua` directory, then the hack path above is >> no >> > > longer >> > > > > > needed. >> > > > > > >> > > > > > So after this PR, the global Lua's search paths are? >> > > > > >> > > > > Here [1] is the new Lua search path for test case. >> > > > > >> > > > > I'll update the `bin/apisix` later. >> > > > > >> > > > > [1] >> > > > > >> > > >> https://github.com/apache/incubator-apisix/pull/1157/files#diff-400bb4a8f273a5c5afddae64632f0a8b >> > > > > >> > > > > > >> > > > > > Thanks, >> > > > > > Ming Wen, Apache APISIX >> > > > > > Twitter: _WenMing >> > > > > > >> > > > > > >> > > > > > YuanSheng Wang <[email protected]> 于2020年3月6日周五 上午11:12写道: >> > > > > > >> > > > > > > On Fri, Mar 6, 2020 at 11:00 AM Ming Wen <[email protected]> >> > > wrote: >> > > > > > > >> > > > > > > > Hi, yuansheng, >> > > > > > > > I am afraid not get your point, can you explain more? >> > > > > > > > >> > > > > > > >> > > > > > > In the APISIX project, we put all the source code in the `lua` >> > > > > directory >> > > > > > > now >> > > > > > > . >> > > > > > > >> > > > > > > In order for OpenResty to load it, we need to add the `lua` >> > > directory >> > > > > to >> > > > > > > Lua's global search path. >> > > > > > > So we can see a lot of hard-coded paths, such as: >> > > > > > > `/usr/share/lua/5.1/apisix/lua / ?. lua`. >> > > > > > > >> > > > > > > If we remove the `lua` directory, then the hack path above is >> no >> > > longer >> > > > > > > needed. >> > > > > > > >> > > > > > > So this is the PR result you see. >> > > > > > > >> > > > > > > >> > > > > > > > >> > > > > > > > I reviewed your PR and there still has the version of >> Lua[1], >> > > > > > > > the most important change is `lua/apisix.lua → >> apisix/init.lua`, >> > > > > right? >> > > > > > > > >> > > > > > > > [1] >> > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > >> > > >> https://github.com/apache/incubator-apisix/pull/1157/files#diff-400bb4a8f273a5c5afddae64632f0a8bR60 >> > > > > > > > >> > > > > > > > Thanks, >> > > > > > > > Ming Wen, Apache APISIX >> > > > > > > > Twitter: _WenMing >> > > > > > > > >> > > > > > > > >> > > > > > > > YuanSheng Wang <[email protected]> 于2020年2月24日周一 >> 下午11:14写道: >> > > > > > > > >> > > > > > > > > Hi: >> > > > > > > > > >> > > > > > > > > I am using Luarocks 3 now. >> > > > > > > > > >> > > > > > > > > I make a try to install Apache APISIX by Luarocks `sudo >> > > luarocks >> > > > > > > install >> > > > > > > > > apisix`, and it is successful. >> > > > > > > > > >> > > > > > > > > I got an error message when I try to run the Apache APISIX >> > > server. >> > > > > Here >> > > > > > > > is >> > > > > > > > > the error message: >> > > > > > > > > >> > > > > > > > > nginx: [error] init_by_lua error: init_by_lua:3: module >> > > 'apisix' >> > > > > not >> > > > > > > > found: >> > > > > > > > > no field package.preload['apisix'] >> > > > > > > > > no file >> '/usr/local/apisix//deps/share/lua/5.1/apisix.lua' >> > > > > > > > > no file '/usr/share/lua/5.1/apisix/lua/apisix.lua' >> > > > > > > > > no file '/usr/local/share/lua/5.1/apisix/lua/apisix.lua' >> > > > > > > > > >> > > > > > > > > I found that the luarocks will install the APISIX to >> > > > > > > > > `/usr/share/lua/5.3/****`. >> > > > > > > > > >> > > > > > > > > I think we should rename the folder lua[1] to apisix, >> then we >> > > do >> > > > > not >> > > > > > > need >> > > > > > > > > to hack for the Lua finding path[2]. >> > > > > > > > > >> > > > > > > > > >> > > > > > > > > [1] >> https://github.com/apache/incubator-apisix/tree/master/lua >> > > > > > > > > [2] >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > >> > > >> https://github.com/apache/incubator-apisix/blob/master/bin/apisix#L105-L107 >> > > > > > > > > >> > > > > > > > > >> > > > > > > > > -- >> > > > > > > > > >> > > > > > > > > *MembPhis* >> > > > > > > > > My github: https://github.com/membphis >> > > > > > > > > Apache APISIX: https://github.com/apache/incubator-apisix >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > > >> > > > > > > -- >> > > > > > > >> > > > > > > *MembPhis* >> > > > > > > My github: https://github.com/membphis >> > > > > > > Apache APISIX: https://github.com/apache/incubator-apisix >> > > > > > > >> > > > > >> > > > > >> > > > > >> > > > > -- >> > > > > >> > > > > MembPhis >> > > > > My github: https://github.com/membphis >> > > > > Apache APISIX: https://github.com/apache/incubator-apisix >> > > > > >> > > >> > > >> > > >> > > -- >> > > MembPhis >> > > My github: https://github.com/membphis >> > > Apache APISIX: https://github.com/apache/incubator-apisix >> > > >> >> >> >> -- >> >> MembPhis >> My github: https://github.com/membphis >> Apache APISIX: https://github.com/apache/incubator-apisix >> >
