Criando o pacote nginx deb com openssl personalizados

2

Estou tentando construir pacotes nginx a partir de uma fonte de pacotes deb (a partir da popular linha principal ninax semi-oficial nginx PPA ), mas ligado a um fork do openssl que contém as adições do ChaCha20 e do Poly1305.

Configurei o openssl com ./config no-ssl2 no-ssl3 shared -fPIC (também defini CFLAGS="-fPIC" ), que funcionou e foi criado com êxito, e posso ver -fPIC aparecendo em todas as etapas de compilação durante a compilação. Quando eu construo o pacote nginx com dpkg-buildpackage -b apontando para ele (eu editei auto/options e set OPENSSL=/home/admin/openssl ), recebo este erro:

objs/ngx_modules.o \
-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now -ldl -lpthread -lpthread -lcrypt -lpam -lexpat -lpcre /root/openssl/.openssl/lib/libssl.a 
/home/admin/openssl/.openssl/lib/libcrypto.a -ldl -lz -lxml2 -lxslt -lexslt -lgd -lGeoIP \
-Wl,-E /usr/bin/ld: /home/admin/openssl/.openssl/lib/libssl.a(s23_meth.o): 
relocation R_X86_64_32 against '.rodata' can not be used when making a shared object; recompile with -fPIC
/home/admin/openssl/.openssl/lib/libssl.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status

Alguma ideia do que estou fazendo errado, desde que eu criei com -fPIC ?

    
por Synchro 29.07.2016 / 12:31

1 resposta

2

Eu consegui fazer isso funcionar. Acontece que ao construir o nginx desta forma, ele não usa as bibliotecas openssl pré-construídas, mas compila-as novamente, e neste momento faltam as opções de configuração que eu forneci na construção separada. Eu localizei uma propriedade OPENSSL_OPT no arquivo auto/options . Então as opções que eu coloquei lá foram:

USE_OPENSSL=YES
OPENSSL=/root/openssl
OPENSSL_OPT="no-ssl2 no-ssl3 -fPIC"

Com esses set, a compilação foi completada com sucesso, e eu pude instalar os pacotes resultantes.

    
por Synchro 29.07.2016 / 12:31