I'm using Vagrant to build a reproducible virtual machine for one of my projects. This virtual machine needs a basic LEMP stack, and I'm using a shell script to provision it after it's created.

The part I'm having trouble with is installing nginx from source. The provisioning script is as follows:


# nginx settings

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 ]
    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 install

The process fails at the make and make install steps, producing the following errors:

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

I've had to install make using apt-get at the start of the script because the image I'm using doesn't already have make installed. The image is a Ubuntu Server 12.04 64-bit image.

I've verified that nginx gets successfully downloaded and extracted by checking the usr/src directory after the scripts runs.

Googling the make errors doesn't seemm to return anything useful I can work with as they're all specific to installing software that I'm not using.

Any ideas?

  • Why not use the binary package from your distro? – EEAA Apr 3 '14 at 22:10
  • AFAIK Ubuntu 12.04 doesn't have the latest version of nginx available via apt-get. – John Dorean Apr 3 '14 at 22:17
  • Do you need the latest version? Newest is often not the most stable, and using your distribution's nginx package is much easier in every regard. Best practice is to always use official distro packages unless there is a very specific need for a different version, and even then, build your own binary packages. Never compile anything on your servers. – EEAA Apr 3 '14 at 22:35
  • This is largely not what you want to do. Build your own packages if you need a newer version, and have apt use those instead. Don't try to build nginx from source every time a vagrant machine starts up. – devicenull Apr 3 '14 at 23:55
  • 1
    There is official repo and PPA on Launchpad. The most common reason to rebuild nginx is to include some third-party modules. But even in this case you should build binary package somewhere else as @EEAA says. – Alexey Ten Apr 4 '14 at 6:37

I don't see the reason why would you install NginX from source since you didn't say any reason. So I'm just leaving this here from the official site:

For Ubuntu replace codename with Ubuntu distribution codename, and append the following to the end of the /etc/apt/sources.list file:

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

For Debian/Ubuntu then run the following commands:

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
| improve this answer | |

I had the same problem on my centos7 too, so it turned out that I hadn't installed the peer packages completely. So it might solve your problem if you are on centos, too:

yum install -y gcc pcre pcre-devel openssl openssl-devel gd gd-devel
| improve this answer | |

This happens when some library is missing. As I see this is kind of an try and error situation.

e.g:You need to install PCRE libraries for Nginx to compile. Try this:

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

If it doesnt work, something else is missing...like in my case.

Edit: also make sure you got zlib installed

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

Also I switched to the newest version of nginx and then I was able to compile.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.