パッセンジャー サポートを使用して nginx をコンパイル中にエラーが発生しました

パッセンジャー サポートを使用して nginx をコンパイル中にエラーが発生しました

以下の方法でpassengerをインストールしました:

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 updatecd /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、-B シンボリック関数 -Wl、-z、relro -Wl、-z、now -Wl、-- 必要に応じ -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: 共有オブジェクトを作成するときに、`.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: ターゲット 'build' のレシピが失敗しました
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 ビルドでエラー終了ステータス 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 コマンド を実行して、passenger をコンパイルしましたenv NOEXEC_DISABLE=1 /usr/local/rvm/gems/ruby-2.4.0/wrappers/rake nginx:clean nginx RELEASE=yes

関連情報