
我剛剛透過以下方式安裝了乘客:
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
然後編輯/etc/apt/sources.list
並添加:
deb http://nginx.org/packages/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/ubuntu/ xenial nginx
然後apt-get update
,cd /var/tmp
和apt-get source nginx
。添加--add-module=/usr/local/rvm/gems/ruby-2.4.0/gems/passenger-5.1.2/src/nginx_module \
到debian\rules
正確的位置。
當編譯帶有乘客模組支援的 nginx 時,問題就出現了:
apt-get build-dep nginx
dpkg-buildpackage -b
-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie -ldl -lpthread -lpthread -lcrypt /var/tmp/ngx_pagespeed-1.12.34.2-lcrypt /var/tmp/ngx_pagespeed-1.12.34.2-lcrypt /var/tmp/ngx_pagespeed-1.12.34.2-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/公共/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-by 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/StrIntUtilsStrict(Alm-Notrictm 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/Launcher.o /usr/local/rv-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.2.2.2.2.2.2.2。 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:針對`.bss重新定位R_X86_64_32 ' 建立共享物件時不能使用;使用 -fPIC 重新編譯 /usr/local/rvm/gems/ruby-2.4.0/gems/passenger-5.1.2/buildout/common/libpassenger_common/Logging.o:新增符號時發生錯誤:錯誤值 collect2:錯誤:ld 回傳 1 退出狀態 objs/Makefile:344: 目標「objs/nginx」的配方失敗 make[2]: *** [objs/nginx] 錯誤 1 make[2]: 離開目錄 '/var/tmp/t/nginx-1.10.3/debian/build-nginx' Makefile:8: 目標「建置」的配方失敗 make[1]: *** [建置] 錯誤 2 make[1]: 離開目錄 '/var/tmp/t/nginx-1.10.3/debian/build-nginx' debian/rules:60: 目標「build-arch.nginx」的配方失敗 make: *** [build-arch.nginx] 錯誤 2 dpkg-buildpackage:錯誤:debian/rules build 給出錯誤退出狀態 2
這是以下的輸出passenger-config --nginx-addon-dir
:
/usr/local/rvm/gems/ruby-2.4.0/gems/passenger-5.1.2/src/nginx_module
奇怪的是,如果我嘗試從原始碼編譯 nginx,passenger-install-nginx-module
一切都會正常。
無論如何,有誰知道我該如何解決這個問題?對我來說,按照上述步驟編譯 nginx 是必須的。我希望能夠在解決問題時遵循上述過程。
謝謝 :)
答案1
最後我編輯了/usr/local/rvm/gems/ruby-2.4.0/gems/passenger-5.1.2/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb
這一行並將其替換flags << "-fvisibility=hidden -DVISIBILITY_ATTRIBUTE_SUPPORTED"
為flags << "-fvisibility=hidden -DVISIBILITY_ATTRIBUTE_SUPPORTED -fPIC"
.然後透過執行先前的 rake 指令來編譯乘客env NOEXEC_DISABLE=1 /usr/local/rvm/gems/ruby-2.4.0/wrappers/rake nginx:clean nginx RELEASE=yes
。