3

我刚刚安装了PostgreSQL和用于在 Heroku 上运行 Rails 的pg gem。我在跑

$ 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 库?

4

2 回答 2

4

我在 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 现在应该很高兴。

于 2012-11-10T20:17:39.113 回答
1

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

这篇文章详细解释了这个问题。

于 2012-11-03T20:56:26.267 回答