Fehler beim Kompilieren von Nginx mit Passenger-Unterstützung

Fehler beim Kompilieren von Nginx mit Passenger-Unterstützung

Ich habe Passenger gerade installiert von:

gem install passenger
cd /usr/local/rvm/gems/ruby-2.4.0/gems/passenger-5.1.2
env NOEXEC_DISABLE=1 /usr/local/rvm/gems/ruby-2.4.0/wrappers/rake nginx:clean nginx RELEASE=yes

Dann bearbeitet /etc/apt/sources.listund hinzugefügt:

deb http://nginx.org/packages/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/ubuntu/ xenial nginx

Dann apt-get update, cd /var/tmpund apt-get source nginx. An der richtigen Stelle --add-module=/usr/local/rvm/gems/ruby-2.4.0/gems/passenger-5.1.2/src/nginx_module \hinzugefügt .debian\rules

Das Problem tritt auf, wenn Nginx mit Passenger-Modul-Unterstützung kompiliert wird:

apt-get build-dep nginx
dpkg-buildpackage -b
-Wl,-Bsymbolische Funktionen -Wl,-z,relro -Wl,-z,jetzt -Wl,--nach Bedarf -pie -ldl -lpthread -lpthread -lcrypt /var/tmp/ngx_pagespeed-1.12.34.2-beta/psol/lib/Release/linux/x64/pagespeed_automatic.a -lstdc++ -lrt -pthread -lm -lexpat /usr/local/rvm/gems/ruby-2.4.0/gems/passenger-5.1.2/buildout/common/libpassenger_common/Logging.o /usr/local/rvm/gems/ruby-2.4.0/gems/passenger-5.1.2/buildout/common/libpassenger_common/Exceptions.o /usr/local/rvm/gems/ruby-2.4.0/gems/passenger-5.1.2/buildout/common/libpassenger_common/Utils/SystemTime.o /usr/local/rvm/gems/ruby-2.4.0/gems/passenger-5.1.2/buildout/common/libpassenger_common/Utils/StrIntUtils.o /usr/local/rvm/gems/ruby-2.4.0/gems/passenger-5.1.2/buildout/common/libpassenger_common/Utils/StrIntUtilsNoStrictAliasing.o /usr/local/rvm/gems/ruby-2.4.0/gems/passenger-5.1.2/buildout/common/libpassenger_common/Utils/IOUtils.o /usr/local/rvm/gems/ruby-2.4.0/gems/passenger-5.1.2/buildout/common/libpassenger_common/Utils.o /usr/local/rvm/gems/ruby-2.4.0/gems/passenger-5.1.2/buildout/common/libpassenger_common/WatchdogLauncher.o /usr/local/rvm/gems/ruby-2.4.0/gems/passenger-5.1.2/buildout/common/libpassenger_common/AppTypes.o /usr/local/rvm/gems/ruby-2.4.0/gems/passenger-5.1.2/buildout/common/libpassenger_common/Utils/CachedFileStat.o /usr/local/rvm/gems/ruby-2.4.0/gems/passenger-5.1.2/buildout/common/libpassenger_common/UnionStationFilterSupport.o /usr/local/rvm/gems/ruby-2.4.0/gems/passenger-5.1.2/buildout/common/libboost_oxt.a -lstdc++ -lpthread -lm -lrt -lpcre -lssl -lcrypto -ldl -lz -lGeoIP \
-Wl,-E
/usr/bin/ld.bfd.real: /usr/local/rvm/gems/ruby-2.4.0/gems/passenger-5.1.2/buildout/common/libpassenger_common/Logging.o: Die Verschiebung von R_X86_64_32 gegen „.bss“ kann bei der Erstellung eines gemeinsam genutzten Objekts nicht verwendet werden; mit -fPIC neu kompilieren.
/usr/local/rvm/gems/ruby-2.4.0/gems/passenger-5.1.2/buildout/common/libpassenger_common/Logging.o: Fehler beim Hinzufügen von Symbolen: Ungültiger Wert
collect2: Fehler: ld hat den Exit-Status 1 zurückgegeben.
objs/Makefile:344: Rezept für Ziel „objs/nginx“ ist fehlgeschlagen
make[2]: *** [objs/nginx] Fehler 1
make[2]: Verlasse das Verzeichnis '/var/tmp/t/nginx-1.10.3/debian/build-nginx'
Makefile:8: Rezept für Ziel „Build“ ist fehlgeschlagen
make[1]: *** [build] Fehler 2
make[1]: Verlasse das Verzeichnis '/var/tmp/t/nginx-1.10.3/debian/build-nginx'
debian/rules:60: Rezept für Ziel „build-arch.nginx“ fehlgeschlagen
make: *** [build-arch.nginx] Fehler 2
dpkg-buildpackage: Fehler: debian/rules build ergab Fehler-Exit-Status 2

Dies ist die Ausgabe von passenger-config --nginx-addon-dir:

/usr/local/rvm/gems/ruby-2.4.0/gems/passenger-5.1.2/src/nginx_module

Das Merkwürdige ist, dass passenger-install-nginx-modulealles problemlos funktioniert, wenn ich versuche, Nginx aus dem Quellcode zu kompilieren.

Weiß jemand, wie ich dieses Problem beheben kann? Für mich ist das Kompilieren von Nginx gemäß dem genannten Verfahren ein Muss. Ich möchte in der Lage sein, das obige Verfahren zu befolgen, während ich das Problem behebe.

Danke :)

Antwort1

Zum Schluss habe ich /usr/local/rvm/gems/ruby-2.4.0/gems/passenger-5.1.2/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rbdiese Zeile bearbeitet und flags << "-fvisibility=hidden -DVISIBILITY_ATTRIBUTE_SUPPORTED"durch ersetzt flags << "-fvisibility=hidden -DVISIBILITY_ATTRIBUTE_SUPPORTED -fPIC". Dann habe ich Passenger kompiliert, indem ich den vorherigen Rake-Befehl ausgeführt habe, env NOEXEC_DISABLE=1 /usr/local/rvm/gems/ruby-2.4.0/wrappers/rake nginx:clean nginx RELEASE=yes.

verwandte Informationen