我正在使用 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
该过程在make
和make 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,然后我就可以进行编译了。