Não é possível instalar o nginx da fonte no script de provisionamento

1

Estou usando o Vagrant para construir uma máquina virtual reproduzível para um dos meus projetos. Essa máquina virtual precisa de uma pilha LEMP básica e estou usando um script de shell para provisioná-la depois que ela for criada.

A parte em que estou tendo problemas é instalar o nginx a partir do código-fonte. O script de provisionamento é o seguinte:

#!/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

O processo falha nas etapas make e make install , produzindo os seguintes erros:

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

Eu tive que instalar make usando apt-get no início do script porque a imagem que estou usando ainda não tem make instalado. A imagem é uma imagem de 64 bits do Ubuntu Server 12.04.

Verifiquei que o nginx foi baixado e extraído com sucesso, verificando o diretório usr/src após a execução dos scripts.

Pesquisando os erros make não parece retornar nada útil com o qual eu possa trabalhar, já que todos eles são específicos para instalar software que não estou usando.

Alguma idéia?

    
por John Dorean 04.04.2014 / 00:03

2 respostas

1

Não vejo a razão pela qual você instalaria o NginX a partir do código-fonte, já que não disse nenhum motivo. Então, estou deixando isso aqui no site oficial:

Para o Ubuntu, substitua codename pelo nome de código de distribuição do Ubuntu e acrescente o seguinte ao final do arquivo /etc/apt/sources.list :

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

Para o Debian / Ubuntu, execute os seguintes comandos:

apt-get update
apt-get install nginx

Ubuntu:

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
    
por 10.08.2017 / 13:21
0

Isso acontece quando falta alguma biblioteca. Como eu vejo, esta é uma situação de tentativa e erro.

por exemplo: Você precisa instalar bibliotecas PCRE para o Nginx para compilar. Tente isto:

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

Se isso não funcionar, algo está faltando ... como no meu caso.

Editar: também verifique se você instalou o zlib

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

Também mudei para a versão mais recente do nginx e depois consegui compilar.

    
por 27.06.2015 / 10:07