Encurte os cabeçalhos de desenvolvimento com suporte a SSL para o Phusion Passenger 3

1

Oi Quando eu executo o passageiro-install-apache2-module eu recebo:

Verificando o software necessário ...

  • Compilador GNU C ++ ... encontrado em / opt / csw / gcc4 / bin / g ++
  • Curve cabeçalhos de desenvolvimento com suporte SSL ... não encontrado

Eu segui este tutorial link e corrigi todas as dependências, exceto Curl com cabeçalhos SSL.

    
por rtacconi 05.02.2011 / 19:43

1 resposta

1

Não há necessidade de fazer nenhum dos truques com o CRLE, conforme descrito no link para o darksaslight.com na pergunta original. De fato, eu tentaria remover qualquer alteração se você tivesse feito isso. A técnica de compilação corrigiu o RUNPATH dentro das bibliotecas para que ele saiba procurar nos vários diretórios / opt / csw / lib sem qualquer LD_LIBRARY_PATH ou ajustes de cores.

Você precisará dos seguintes pacotes OpenCSW, além dos pacotes base do ruby:

  • ruby18_dev
  • libidn_dev
  • libcurl_dev
  • rubygems
  • gcc4g ++
  • ruby18_gcc4
  • apache2_dev

O libidn_dev não é óbvio, pois o script do instalador "útil" oculta a saída dos comandos de compilação de teste que ele executa. Eu achei revendo a saída da treliça e descobri que havia um erro de linker devido à biblioteca ausente.

Você precisará executar os seguintes comandos como root ou sob sudo. Eu prefixei todos os meus comandos com sudo.

Instale as gemas do rack e do passageiro:

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

Em seguida, use este comando para iniciar a compilação:

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

Depois disso, você poderá ver um erro como este:

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 -...]

Você pode corrigir isso editando /opt/csw/lib/ruby/gems/1.8/gems/passenger-3.0.11/lib/phusion_passenger/platform_info/compiler.rb e limpando o "-D_XOPEN_SOURCE = 500" de uma das declarações de bandeiras. Assim:

                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/

Isso leva você até aqui:

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…]

Para limpar, edite /opt/csw/lib/ruby/gems/1.8/gems/passenger-3.0.11/lib/phusion_passenger/platform_info/compiler.rb novamente e insira uma linha como:

flags << '-I/usr/include'

depois de "se RUBY_PLATFORM = ~ / solaris /". Isso está na seção como a edição acima.

Substitua também a linha

flags << '-DHAS_ALLOCA_H' if has_alloca_h?

com

flags << '-DHAS_ALLOCA_H_' if has_alloca_h?

Observe o sublinhado adicional no final de ALLOCA_H

    
por 26.01.2012 / 20:43