
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.list
und 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/tmp
und 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-module
alles 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.rb
diese 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
.