Назад | Перейти на главную страницу

Заголовки разработки Curl с поддержкой SSL для Phusion Passenger 3

Привет, когда я запускаю пассажирский-install-apache2-module, я получаю:

Проверка необходимого программного обеспечения ...

Я следил за этим руководством http://www.darkaslight.com/blog/entry/50-Installing-Phusion-Passenger-on-Solaris и я исправил все зависимости, кроме Curl с заголовками SSL.

Нет необходимости проделывать какие-либо трюки с CRLE, как описано в ссылке на darksaslight.com в исходном вопросе. Фактически, я бы попытался удалить любые изменения, если вы это сделали. Метод сборки исправил RUNPATH внутри библиотек, чтобы он знал, что нужно искать в различных каталогах / opt / csw / lib без каких-либо настроек LD_LIBRARY_PATH или crle.

Вам потребуются следующие пакеты OpenCSW в дополнение к базовым пакетам ruby:

  • ruby18_dev
  • libidn_dev
  • libcurl_dev
  • рубиновые камни
  • 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'

после "если RUBY_PLATFORM = ~ / solaris /". Это находится в разделе, как указано выше.

Также замените строку

flags << '-DHAS_ALLOCA_H' if has_alloca_h?

с участием

flags << '-DHAS_ALLOCA_H_' if has_alloca_h?

Обратите внимание на дополнительное подчеркивание в конце ALLOCA_H