在 OS X 10.8 上 Passenger 与 Apache 的安装问题

在 OS X 10.8 上 Passenger 与 Apache 的安装问题

我尝试在从 10.7 升级后让 Passenger 在 Mountain Lion 上运行,但在运行时遇到问题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 问题。

有人有什么想法吗?

谢谢,格里夫

答案1

这是与 PCRE 问题不同的一个问题。Phusion Passenger 使用来自 POSIX 标准的正则表达式函数

乍一看,这个错误似乎暗示 OS X 10.8 不支持 POSIX 正则表达式函数。但这是一个非常奇怪的结论,因为:

  • 10.6 和 10.7 很好地支持它们。
  • 头文件 regex.h 可用,否则您将收到有关 regex.h 丢失的编译器错误,而不是此链接器错误。
  • 甚至苹果声称正式支持它

目前我唯一能得出的结论是,要么你的系统坏了,要么 OS X 10.8 坏了。我现在正在度假,到欧洲和美国的 ping 时间超过 1000 毫秒,而且我没有 OS X 10.8,所以我现在无法进一步分析问题。因此,我可以给你的短期建议是:

  • 重新安装系统。
  • 联系 Apple 获取支持。

相关内容