Build 为什么luarocks生成文件找不到我的lua解释器?
我正在尝试将Luarock安装到自定义位置。我已经下载了最新的tarball(v2.3.0)并运行以下Build 为什么luarocks生成文件找不到我的lua解释器?,build,lua,makefile,luarocks,Build,Lua,Makefile,Luarocks,我正在尝试将Luarock安装到自定义位置。我已经下载了最新的tarball(v2.3.0)并运行以下/configure命令: # OPENRESTY_PREFIX is set to /opt/openresty ./configure --prefix=$OPENRESTY_PREFIX \ --with-lua=$OPENRESTY_PREFIX/luajit \ --with-lua-include=$OPENRESTY_PREFIX/l
/configure
命令:
# OPENRESTY_PREFIX is set to /opt/openresty
./configure --prefix=$OPENRESTY_PREFIX \
--with-lua=$OPENRESTY_PREFIX/luajit \
--with-lua-include=$OPENRESTY_PREFIX/luajit/include \
--with-lua-lib=$OPENRESTY_PREFIX/lualib
这会产生以下错误:
Checking Lua interpreter... lua not found (looked in =/opt/openresty/luajit/bin)
You may want to use the flag --with-lua or --with-lua-bin. See --help.
configure failed.
我首先检查了/opt/openresty/luajit/bin/lua
是否正确调用了解释器,就是这样。然后我检查了/opt/openresty/luajit/bin
的内容,发现了以下内容:
$ ls -al /opt/openresty/luajit/bin/
total 2860
drwxr-xr-x 2 root root 4096 Jan 9 14:05 .
drwxr-xr-x 6 root root 4096 Jan 9 14:05 ..
lrwxrwxrwx 1 root root 44 Jan 9 14:05 lua -> /opt/openresty/luajit/bin/luajit-2.1.0-beta1
lrwxrwxrwx 1 root root 18 Jan 9 14:05 luajit -> luajit-2.1.0-beta1
-rwxr-xr-x 1 root root 2918392 Jan 9 14:05 luajit-2.1.0-beta1
我们可以看到,lua
和luajit
是指向luajit-2.1.0-beta1
的符号链接。我想,make
可能在处理符号链接,所以我尝试使用--lua suffix=jit-2.1.0-beta1运行原始命令
我获得了一条类似的错误消息,因此,即使指向“真实”文件,make
似乎也会出错:
Checking Lua interpreter... luajit-2.1.0-beta1 not found (looked in =/opt/openresty/luajit/bin)
You may want to use the flag --with-lua or --with-lua-bin. See --help.
configure failed.
很明显,我在这里遗漏了一些基本的东西。我做错了什么
补充资料
构建目标
我在建立一个debian:jessie
docker的形象。下面是相应的Dockerfile
,以防它有助于显示目录结构
FROM debian:jessie
# derived from https://github.com/ficusio/openresty/blob/master/debian/Dockerfile
RUN apt-get update && apt-get install -y --no-install-recommends \
curl perl make build-essential procps libreadline-dev libncurses5-dev libpcre3-dev libssl-dev
ENV CFLAGS '-O2'
ENV OPENRESTY_VERSION 1.9.7.1
ENV OPENRESTY_PREFIX /opt/openresty
ENV NGINX_PREFIX /opt/openresty/nginx
ENV VAR_PREFIX /var/nginx
# NginX prefix is automatically set by OpenResty to $OPENRESTY_PREFIX/nginx
# look for $ngx_prefix in https://github.com/openresty/ngx_openresty/blob/master/util/configure
RUN cd /tmp \
&& echo "==> Downloading OpenResty..." \
&& curl -sSL http://openresty.org/download/ngx_openresty-${OPENRESTY_VERSION}.tar.gz | tar -xvz \
&& echo "==> Configuring OpenResty..." \
&& cd ngx_openresty-* \
&& readonly NPROC=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1) \
&& echo "using upto $NPROC threads" \
&& ./configure \
--prefix=$OPENRESTY_PREFIX \
--http-client-body-temp-path=$VAR_PREFIX/client_body_temp \
--http-proxy-temp-path=$VAR_PREFIX/proxy_temp \
--http-log-path=$VAR_PREFIX/access.log \
--error-log-path=$VAR_PREFIX/error.log \
--pid-path=$VAR_PREFIX/nginx.pid \
--lock-path=$VAR_PREFIX/nginx.lock \
--with-luajit \
--with-pcre-jit \
--with-ipv6 \
--with-http_ssl_module \
--without-http_scgi_module \
-j${NPROC} \
&& echo "==> Building OpenResty..." \
&& make -j${NPROC} \
&& echo "==> Installing OpenResty..." \
&& make install \
&& echo "==> Finishing..." \
&& ln -sf $NGINX_PREFIX/sbin/nginx /usr/local/bin/nginx \
&& ln -sf $NGINX_PREFIX/sbin/nginx /usr/local/bin/openresty \
&& ln -sf $OPENRESTY_PREFIX/bin/resty /usr/local/bin/resty \
&& ln -sf $OPENRESTY_PREFIX/luajit/bin/luajit-* $OPENRESTY_PREFIX/luajit/bin/lua \
&& ln -sf $OPENRESTY_PREFIX/luajit/bin/luajit-* /usr/local/bin/lua \
&& apt-get remove -y make build-essential \
&& rm -rf /tmp/ngx_openresty* \
&& rm -rf /var/lib/apt/lists/*
WORKDIR $NGINX_PREFIX
# Example contents for the `nginx` directory can be found at:
# https://github.com/ficusio/openresty/tree/master/_example/nginx
ONBUILD RUN rm -rf conf/* html/*
ONBUILD COPY nginx $NGINX_PREFIX
CMD ["nginx", "-g", "daemon off; error_log /dev/stderr info;"]
我猜OPENRESTY_PREFIX
没有设置为/opt/OPENRESTY
,而是设置为=/opt/OPENRESTY
。这是由错误消息给出的:
Checking Lua interpreter... lua not found (looked in =/opt/openresty/luajit/bin)
由以下行生成:
echo "lua$LUA_SUFFIX not found (looked in $LUA_BINDIR)"
你只需要找出这个无关的符号是从哪里来的。也可以从configure
命令行执行,例如:
--with-lua==$OPENRESTY_PREFIX/luajit
我猜OPENRESTY_PREFIX
没有设置为/opt/OPENRESTY
,而是设置为=/opt/OPENRESTY
。这是由错误消息给出的:
Checking Lua interpreter... lua not found (looked in =/opt/openresty/luajit/bin)
由以下行生成:
echo "lua$LUA_SUFFIX not found (looked in $LUA_BINDIR)"
你只需要找出这个无关的符号是从哪里来的。也可以从configure
命令行执行,例如:
--with-lua==$OPENRESTY_PREFIX/luajit
输出是什么:[-x/opt/openresty/luajit/bin/lua];echo$?
EDIT:nevermind,找到问题,回答。的输出是什么:[-x/opt/openresty/luajit/bin/lua];echo$?
EDIT:nevermind,找到问题,回答。echo$OPENRESTY\u前缀
prints/opt/OPENRESTY
。Aso,dockfile中的ENV
命令在语句中的任何地方都没有=
标记,因此我认为无关的=
符号不是来自环境。这是一个很好的线索,但我不确定还有什么可以负责…事实上,我被纠正了。我用path文本替换了环境变量,问题得到了解决。不知何故,--some flag=$ENV_VAR/some/path
不起作用,而--some flag=/some/path
起作用。任何关于最大化环境变量的建议都与=
令牌共存?echo$OPENRESTY\u前缀
打印/opt/OPENRESTY
。Aso,dockfile中的ENV
命令在语句中的任何地方都没有=
标记,因此我认为无关的=
符号不是来自环境。这是一个很好的线索,但我不确定还有什么可以负责…事实上,我被纠正了。我用path文本替换了环境变量,问题得到了解决。不知何故,--some flag=$ENV_VAR/some/path
不起作用,而--some flag=/some/path
起作用。有任何关于最大化环境变量的建议与=
标记共存吗?