Назад | Перейти на главную страницу

Невозможно установить nginx из источника в сценарии подготовки

Я использую Vagrant для создания воспроизводимой виртуальной машины для одного из моих проектов. Этой виртуальной машине нужен базовый стек LEMP, и я использую сценарий оболочки для его подготовки после его создания.

У меня проблемы с установкой 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 установлены. Образ представляет собой 64-разрядный образ Ubuntu Server 12.04.

Я подтвердил, что nginx успешно загружается и извлекается, проверив usr/src каталог после запуска скриптов.

Погуглите make Ошибки не возвращают ничего полезного, с чем я могу работать, поскольку все они относятся к установке программного обеспечения, которое я не использую.

Любые идеи?

У меня была такая же проблема на моем centos7 тоже, поэтому оказалось, что я не установил одноранговые пакеты полностью. Таким образом, это может решить вашу проблему, если вы тоже используете centos:

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

Я не вижу причины, по которой вы устанавливаете 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

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

Это происходит, когда какая-то библиотека отсутствует. Как я вижу, это своего рода попытка и ошибка.

например: вам необходимо установить библиотеки 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, а затем смог скомпилировать.