无法从配置脚本中的源安装 nginx

无法从配置脚本中的源安装 nginx

我正在使用 Vagrant 为我的一个项目构建一个可重现的虚拟机。此虚拟机需要一个基本的 LEMP 堆栈,我在创建后使用 shell 脚本对其进行配置。

我遇到问题的部分是从源代码安装 nginx。配置脚本如下:

#!/bin/bash

# nginx settings
NGINX_VERSION=1.4.7
NGINX_SOURCE=http://nginx.org/download/nginx-$NGINX_VERSION.tar.gz

echo "==> Installing required packages and upgrading"
apt-get -u update
apt-get install make

echo "==> Checking if nginx is installed"
if [ ! -e /opt/nginx-$NGINX_VERSION ]
then
    echo "==> nginx not installed, installing nginx $NGINX_VERSION"

    # Download nginx to /usr/src and cd into the extracted directory
    cd /usr/src
    wget $NGINX_SOURCE
    tar xf nginx-$NGINX_VERSION.tar.gz
    cd nginx-$NGINX_VERSION

    # Configure nginx
    ./configure --with-pcre --with-http_ssl_module --with-http_spdy_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_stub_status_module --prefix=/opt/nginx-$NGINX_VERSION

    # Make nginx and install it
    make
    make install
fi

该过程在makemake install步骤处失败,并产生以下错误:

make: *** No rule to make target `build', needed by `default'.  Stop.
make: *** No rule to make target `install'.  Stop.

我必须在脚本开始时安装make使用apt-get,因为我使用的映像尚未make安装。该映像是 Ubuntu Server 12.04 64 位映像。

usr/src我已经通过检查脚本运行后的目录验证了 nginx 是否已成功下载和提取。

谷歌搜索make错误似乎并没有返回任何有用的信息,因为它们都特定于安装我没有使用的软件。

有任何想法吗?

答案1

我不明白你为什么要从源代码安装 NginX,因为你没有说任何理由。所以我只是把官方网站上的这段话放在这里:

对于 Ubuntu,将其替换codename为 Ubuntu 发行版代号,并将以下内容附加到文件末尾/etc/apt/sources.list

deb http://nginx.org/packages/mainline/ubuntu/ codename nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ codename nginx

对于 Debian/Ubuntu,运行以下命令:

apt-get update
apt-get install nginx

乌本图:

Version Codename    Supported Platforms
12.04   precise     x86_64, i386
14.04   trusty      x86_64, i386, aarch64/arm64
16.04   xenial      x86_64, i386, ppc64el, aarch64/arm64
16.10   yakkety     x86_64, i386

答案2

我也有同样的问题centos7,所以原来我没有完全安装对等包。因此,如果您也在使用 centos,它可能会解决您的问题:

yum install -y gcc pcre pcre-devel openssl openssl-devel gd gd-devel

答案3

当缺少某个库时会发生这种情况。在我看来,这是一种尝试和错误的情况。

例如:您需要安装 PCRE 库才能让 Nginx 进行编译。尝试以下操作:

apt-get install libpcre3 libpcre3-dev
apt-get install openssl
apt-get install libssl-dev

如果它不起作用,那么肯定是缺少了其他东西...就像我的情况一样。

编辑:还请确保您已安装 zlib

apt-get install --reinstall zlibc zlib1g zlib1g-dev

另外,我切换到了最新版本的 nginx,然后我就可以进行编译了。

相关内容