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

Проблемы с установкой Passenger с Apache на OS X 10.8

Я пытаюсь заставить Passenger работать с Mountain Lion после обновления с 10.7, но у меня возникают проблемы при запуске passenger-install-apache2-module:

g++ ext/apache2/HelperAgent.cpp -o agents/apache2/PassengerHelperAgent -Iext -Iext/common -D_REENTRANT -I/usr/local/include -DHASH_NAMESPACE="__gnu_cxx" -DHASH_FUN_H="<ext/hash_fun.h>" -DHAS_ALLOCA_H -DHAS_SFENCE -DHAS_LFENCE -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-long-long -Wno-missing-field-initializers -g -DPASSENGER_DEBUG -DBOOST_DISABLE_ASSERTS ext/common/libpassenger_common.a ext/common/libboost_oxt.a -lpthread  
Undefined symbols for architecture x86_64:
  "_regcompA", referenced from:
      Passenger::FilterSupport::Filter::Value::Value(bool, Passenger::StaticString const&, bool)in libpassenger_common.a(aggregate.o)
      Passenger::FilterSupport::Filter::Value::initializeFrom(Passenger::FilterSupport::Filter::Value const&)in libpassenger_common.a(aggregate.o)
  "_regexecA", referenced from:
      Passenger::FilterSupport::Filter::Comparison::compareStringOrRegexp(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Passenger::FilterSupport::Context const&)in libpassenger_common.a(aggregate.o)
  "_regfreeA", referenced from:
      Passenger::FilterSupport::Filter::Value::freeStorage()    in libpassenger_common.a(aggregate.o)
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
rake aborted!
Command failed with status (1): [g++ ext/apache2/HelperAgent.cpp -o agents/...]

Все необходимые проверки программного обеспечения отмечены зеленым цветом.

Я установил заголовки PCRE, как предлагается в Сообщение в блоге Phusion, хотя это было немного рискованно, поскольку оно нацелено на проблемы с Nginx.

У кого-нибудь есть идеи?

Спасибо, Грифф

Это отдельная проблема от проблемы PCRE. Phusion Passenger использует функции regexp из стандарта POSIX.

На первый взгляд, эта ошибка означает, что OS X 10.8 не поддерживает функции регулярных выражений POSIX. Но это было бы очень странным выводом, учитывая, что:

  • 10.6 и 10.7 их прекрасно поддерживали.
  • доступен заголовочный файл regex.h, в противном случае вместо этой ошибки компоновщика вы получите ошибку компилятора об отсутствии regex.h.
  • даже Apple утверждает, что официально поддерживает это.

Единственный вывод, который я могу сделать на данный момент, - либо ваша система сломана, либо OS X 10.8 сломалась. Я сейчас в отпуске, время пинга в Европу и США превышает 1000 мс, и у меня нет OS X 10.8, поэтому я не могу дальше анализировать проблему прямо сейчас. Таким образом, я могу дать вам краткосрочный совет:

  • Переустановите вашу систему.
  • Обратитесь в Apple за поддержкой.