为什么rake因libpq.5.dylib而中止

时间:2012-06-23 16:55:41

标签: ruby-on-rails-3 postgresql libpq

我刚安装了 PostgreSQL pg gem,用于在Heroku上运行Rails。我正在跑步

$ rake -T

但是因为与“libpq.5.dylib”

相关的原因而中止了
rake aborted!
dlopen(/Library/Ruby/Gems/1.8/gems/pg-0.13.2/lib/pg_ext.bundle, 9): Library not loaded: libpq.5.dylib
Referenced from: /Library/Ruby/Gems/1.8/gems/pg-0.13.2/lib/pg_ext.bundle
Reason: image not found - /Library/Ruby/Gems/1.8/gems/pg-0.13.2/lib/pg_ext.bundle

是什么给出了?

如何加载libpq.5.dylib库?

2 个答案:

答案 0 :(得分:3)

我在Mac上。以下是我为使其发挥作用所做的一切。

cd /Library/Ruby/Gems/1.8/gems/pg-0.13.2/lib/
otool -L pg_ext.bundle

libpq.5.dylib (compatibility version 5.0.0, current version 5.4.0)

请注意,libpq.5.dylib不像pg_ext.bundle中的其他库那样使用绝对路径。系统找不到它。您需要更改它在libpq.5.dylib中的位置。

install_name_tool -change libpq.5.dylib /Library/PostgreSQL/9.1/lib/libpq.5.dylib pg_ext.bundle

注意:使用适用于您的系统的绝对路径。我用它来做我的系统。

现在运行:

otool -L pg_ext.bundle

注意libpq.5.dylib现在指向的内容:

/Library/PostgreSQL/9.1/lib/libpq.5.dylib (compatibility version 5.0.0, current version 5.4.0)

pg gem现在应该很开心。

答案 1 :(得分:1)

从讨论here看来,编译 64位Ruby 的pg对 32位Postgresql 是问题的根源。 所以解决它的唯一方法是安装64位Postgresql,然后重新安装pg

This post详细解释了这个问题。