web-dev-qa-db-ja.com

Phusion Passenger3のSSLをサポートするCurl開発ヘッダー

こんにちはpassenger-install-Apache2-moduleを実行すると、次のようになります。

必要なソフトウェアを確認しています...

  • GNU C++コンパイラ.../opt/csw/gcc4/bin/g ++にあります
  • SSLをサポートするCurl開発ヘッダー...見つかりません

このチュートリアルに従いました http://www.darkaslight.com/blog/entry/50-Installing-Phusion-Passenger-on-Solaris そしてSSLヘッダー付きのCurlを除くすべての依存関係を修正しました。

1
rtacconi

元の質問のdarksaslight.comへのリンクで説明されているように、CRLEでトリックを実行する必要はありません。実際、変更があった場合は削除しようとします。ビルド手法により、ライブラリ内のRUNPATHが修正され、LD_LIBRARY_PATHやcrleの調整なしでさまざまな/ opt/csw/libディレクトリを検索できるようになりました。

ベースのRubyパッケージに加えて、次のOpenCSWパッケージが必要になります。

  • Ruby18_dev
  • libidn_dev
  • libcurl_dev
  • rubygems
  • gcc4g ++
  • Ruby18_gcc4
  • Apache2_dev

Libidn_devは、インストーラースクリプトが実行するテストコンパイルコマンドの出力を「役立つように」非表示にするため、自明ではありません。 trussの出力を確認して見つけたところ、ライブラリがないためにリンカーエラーが発生していることがわかりました。

Rootとして、またはSudoの下で、次のコマンドを実行する必要があります。すべてのコマンドの前にSudoを付けました。

ラックとパッセンジャージェムを取り付けます。

/opt/csw/bin/gem install rack
/opt/csw/bin/gem install passenger

次に、次のコマンドを使用してコンパイルを開始します。

PATH=/opt/csw/bin:$PATH /opt/csw/bin/passenger-install-Apache2-module --apxs2-path /opt/csw/Apache2/sbin/apxs --auto

それが始まると、次のようなエラーが表示される場合があります。

In file included from /usr/include/sys/types.h:18:0,
                 from ext/common/AccountsDatabase.cpp:26,
                 from ext/Apache2/module_libpassenger_common/aggregate.cpp:5:
/opt/csw/lib/gcc/sparc-Sun-solaris2.10/4.6.2/include-fixed/sys/feature_tests.h:341:2: error: #error "Compiler or options invalid for pre-UNIX 03 X/Open applications    and pre-2001 POSIX applications"
rake aborted!
Command failed with status (1): [g++ -Iext -Iext/common -Iext/libev -fPIC -...]

/opt/csw/lib/Ruby/gems/1.8/gems/passenger-3.0.11/lib/phusion_passenger/platform_info/compiler.rbを編集し、いずれかから「-D_XOPEN_SOURCE = 500」を削除することで、これを修正できます。フラグステートメント。そのようです:

                if Ruby_PLATFORM =~ /solaris/                                                                                                                                                            
                    flags << '-pthreads'                                                                                                                                                             
                    #flags << '-D_XOPEN_SOURCE=500 -D_XPG4_2 -D__EXTENSIONS__ -D__SOLARIS__ -D_FILE_OFFSET_BITS=64'
                    flags << '-D_XPG4_2 -D__EXTENSIONS__ -D__SOLARIS__ -D_FILE_OFFSET_BITS=64'
                    flags << '-DBOOST_HAS_STDINT_H' unless Ruby_PLATFORM =~ /solaris2.9/                                                                                                              
                    flags << '-D__SOLARIS9__ -DBOOST__STDC_CONSTANT_MACROS_DEFINED' if Ruby_PLATFORM =~ /solaris2.9/
                    flags << '-mcpu=ultrasparc' if Ruby_PLATFORM =~ /sparc/

これでここにたどり着きます。

In file included from ext/common/LoggingAgent/LoggingServer.h:48:0,
                 from ext/common/LoggingAgent/Main.cpp:43:
ext/common/LoggingAgent/../EventedMessageServer.h: In member function 'void Passenger::EventedMessageClient::writeArrayMessage(const char*, ...)':
ext/common/LoggingAgent/../EventedMessageServer.h:95:45: error: 'alloca' was not declared in this scope
ext/common/LoggingAgent/../EventedMessageServer.h: In member function 'void Passenger::EventedMessageClient::writeArrayMessage(Passenger::StaticString*, unsigned int)':
ext/common/LoggingAgent/../EventedMessageServer.h:118:41: error: 'alloca' was not declared in this scope
rake aborted!
Command failed with status (1): [g++ ext/common/LoggingAgent/Main.cpp -o ag…]

これをクリアするには、/ opt/csw/lib/Ruby/gems/1.8/gems/passenger-3.0.11/lib/phusion_passenger/platform_info/compiler.rbを再度編集し、次のような行を入力します。

flags << '-I/usr/include'

「ifRuby_PLATFORM =〜/ solaris /」の後。これは、上記の編集のセクションにあります。

また、ラインを交換してください

flags << '-DHAS_ALLOCA_H' if has_alloca_h?

flags << '-DHAS_ALLOCA_H_' if has_alloca_h?

ALLOCA_Hの最後にある追加の下線に注意してください

1