2016-02-15 6 views
0

Я пытаюсь RPM сборки Apache 2.4.18 с mod_http2 на CentOS 7. Тем не менее, при создании я получаю отказ:апач mod_http2 Предпосылкой неудачи

checking whether to enable mod_http2... checking dependencies 
checking for nghttp2... checking for user-provided nghttp2 base directory... /usr/lib64 
checking for pkg-config along :/usr/lib64/pkgconfig:/usr/share/pkgconfig... adding "-I/usr/lib64/include" to CPPFLAGS 
    setting MOD_CFLAGS to "-I/usr/lib64/include" 
    setting ab_CFLAGS to "-I/usr/lib64/include" 
    adding "-L/usr/lib64/lib" to LDFLAGS 
    setting MOD_LDFLAGS to "-L/usr/lib64/lib" 
checking for nghttp2 version >= 1.2.1... FAILED 
configure: WARNING: nghttp2 version is too old 
no 
checking whether to enable mod_http2... configure: error: mod_http2 has been requested but can not be built due to prerequisite failures 
error: Bad exit status from /var/tmp/rpm-tmp.aOryWX (%build) 


RPM build errors: 
    Bad exit status from /var/tmp/rpm-tmp.aOryWX (%build) 

Однако, мой nghttp2 и версии libnghttp2 оба 1,7 .1:

Installed Packages 
Name  : nghttp2 
Arch  : x86_64 
Version  : 1.7.1 
Release  : 1.el7.centos 
Size  : 1.3 M 
Repo  : installed 
From repo : local 
Summary  : Experimental HTTP/2 client, server and proxy 
URL   : https://nghttp2.org/ 
Licence  : MIT 
Description : This package contains the HTTP/2 client, server and proxy programs. 

Installed Packages 
Name  : libnghttp2 
Arch  : x86_64 
Version  : 1.7.1 
Release  : 1.el7.centos 
Size  : 139 k 
Repo  : installed 
From repo : local 
Summary  : A library implementing the HTTP/2 protocol 
URL   : https://nghttp2.org/ 
Licence  : MIT 
Description : libnghttp2 is a library implementing the Hypertext Transfer Protocol 
      : version 2 (HTTP/2) protocol in C. 

С моей httpd.spec, я добавил следующие параметры конфигурации:

%configure \ 
    --enable-layout=RPM \ 
    --libdir=%{_libdir} \ 
    --sysconfdir=%{_sysconfdir}/httpd/conf \ 
    --includedir=%{_includedir}/httpd \ 
    --libexecdir=%{_libdir}/httpd/modules \ 
    --datadir=%{contentdir} \ 
    --with-installbuilddir=%{_libdir}/httpd/build \ 
    --enable-mpms-shared=all \ 
    --with-apr=%{_prefix} --with-apr-util=%{_prefix} \ 
    --enable-suexec --with-suexec \ 
    --with-suexec-caller=%{suexec_caller} \ 
    --with-suexec-docroot=%{contentdir} \ 
    --with-suexec-logfile=%{_localstatedir}/log/httpd/suexec.log \ 
    --with-suexec-bin=%{_sbindir}/suexec \ 
    --with-suexec-uidmin=500 --with-suexec-gidmin=100 \ 
    --enable-pie \ 
    --with-pcre \ 
    --enable-mods-shared=all \ 
    --enable-ssl --with-ssl --enable-socache-dc --enable-bucketeer \ 
    --enable-case-filter --enable-case-filter-in \ 
    --enable-http --enable-http2 --with-nghttp2=%{_libdir} \ 
    --disable-imagemap 

И мой libnghttp2 установлен в/USR/lib64:

sudo find/-iname "*nghttp2*" 
[sudo] password for administrator: 
/home/administrator/rpmbuild/RPMS/x86_64/nghttp2-1.7.1-1.el7.centos.x86_64.rpm 
/home/administrator/rpmbuild/RPMS/x86_64/libnghttp2-1.7.1-1.el7.centos.x86_64.rpm 
/home/administrator/rpmbuild/RPMS/x86_64/libnghttp2-devel-1.7.1-1.el7.centos.x86_64.rpm 
/home/administrator/rpmbuild/RPMS/x86_64/nghttp2-debuginfo-1.7.1-1.el7.centos.x86_64.rpm 
/home/administrator/rpmbuild/SRPMS/nghttp2-1.7.1-1.el7.src.rpm 
/var/lib/yum/yumdb/l/56527c0ccd96b61605f75b8cb07ebee7b2901c17-libnghttp2-1.7.1-1.el7.centos-x86_64 
/var/lib/yum/yumdb/n/4630c64bc127ec7ed9b842ee49923baa493c05b5-nghttp2-1.7.1-1.el7.centos-x86_64 
/var/repos/centos/7/nghttp2-1.7.1-1.el7.centos.x86_64.rpm 
/var/repos/centos/7/nghttp2-debuginfo-1.7.1-1.el7.centos.x86_64.rpm 
/var/repos/centos/7/libnghttp2-1.7.1-1.el7.centos.x86_64.rpm 
/var/repos/centos/7/libnghttp2-devel-1.7.1-1.el7.centos.x86_64.rpm 
/usr/lib64/libnghttp2.so.14 
/usr/lib64/libnghttp2.so.14.4.1 
/usr/share/licenses/libnghttp2-1.7.1 
/usr/share/nghttp2 

Единственный файл в /usr/share/nghttp2 является fetch-ocsp-response.

Надеюсь, я предоставил достаточную информацию, но если вам нужно больше, пожалуйста, спросите. В чем проблема и как ее исправить?

+0

Может не помогите с rpmbuild, так как не используйте его самостоятельно, но можете указать вам на мою страницу в блоге здесь, где приведены инструкции по ее установке вручную, если это помогает: https://www.tunetheweb.com/performance/http2/ –

ответ

1

Для меня это просто плохое сообщение из скрипта configure.

Я проверил базовую конфигурацию из EPEL, которая использует несколько разные версии, чем те, которые вы предлагаете.

Вы должны установить libnghttp2-разви пакет , а также для сборки (положить его в BuildRequires, а), в то время как вам нужно libnghttp2 для выполнения (положить его в Требуется).

Предложения (отказ от ответственности: Я автор): если вы хотите простой, но эффективный и воспроизводимый способ построения и перестроения RPMs из спецификации, проверить этот проект:

https://github.com/alanfranz/docker-rpm-builder/

+0

Я наткнулся на отсутствие libnghttp2-devel пару дней назад и забыл обновить здесь, но спасибо, что вернулся ко мне. Я рассмотрю связанный с ним rpm builder. –