【发布时间】:2019-01-28 17:14:34
【问题描述】:
我正在尝试使用$NGINX_PREFIX 作为日志记录的前缀。在运行时,链接编辑器应该展开$NGINX_PREFIX。我正在使用以下命令来构建 nginx:
./configure --prefix=\$NGINX_PREFIX --sbin-path=objs/nginx --conf-path=conf/nginx.conf --error-log-path=logs/error.log --http-log-path=logs/access.log
我使用环境变量是因为我想在不同的机器上重复使用构建的二进制文件。
但是当我使用构建二进制文件objs/nginx 时,它会显示以下内容:
nginx: [alert] could not open error log file: open() "$NGINX_PREFIX/logs/error.log" failed (2: No such file or directory)
2018/08/22 17:54:08 [emerg] 16060#0: open() "$NGINX_PREFIX/conf/nginx.conf" failed (2: No such file or directory)
现在请注意,我已经正确设置了环境变量,并且上面显示错误的文件已经存在。
我哪里出错了?是因为 ENV 变量吗?如果是,我怎样才能得到一个预先构建的 nginx 二进制文件,我可以在多台机器上重复使用它而无需一次又一次地构建它?
【问题讨论】:
-
你为什么要逃避
$?如果你想使用一个变量,你应该让 shell 插入它。将您的调用更改为configure --prefix=$NGINX_PREFIX ... -
啊,我明白你在做什么,但是你做错了地方。您不想将前缀更改为
configure。如果您想要一个可以安装在不同位置的预构建二进制文件,您需要将您的更改向上移动几层到包管理系统中。在安装过程中构建一个可重定位的 rpm 并使用备用目标目录。 -
nginx 提供 rpms。你总是可以从那里提取文件并安装它们。
-
请记住,“预构建的压缩包”是一个包管理系统。
-
您可能需要修补 Nginx 源以从环境中获取路径(或修补配置文件以了解环境)。
标签: linux nginx build autotools configure