Sign up ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

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?

share|improve this question
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
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

1 Answer 1

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 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.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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