Build 为什么luarocks生成文件找不到我的lua解释器?

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

我正在尝试将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/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
起作用。有任何关于最大化环境变量的建议与
=
标记共存吗?