【发布时间】:2014-08-28 22:21:19
【问题描述】:
PostgreSQL 9.3 的 EnterpriseDB 安装程序将其文件放在 Mac OSX 上的 /Library/PostgreSQL/9.3/* 中。但是,Ruby gem 'pg' 从/usr/lib 加载旧版本的'C' 动态库libpq.5.dylib,而不是使用来自/Library/PostgreSQL/9.3/lib 的正确版本。尽管我已经安装了 gem,但还是会发生这种情况
gem install pg -- --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config
在需要 'pg' gem 之前,我通过设置 DYLD_PRINT_LIBRARIES 环境变量来确定加载了哪个版本的 libpq.5.dylib。
链接到错误的动态库的最明显后果是 gem 无法使用域套接字连接到数据库,因为套接字在从 /var/pgsql_socket 到 /tmp 的版本之间重新定位。但是,链接到旧库也可能会导致其他问题。
关于如何解决此问题的任何建议?
(我正在运行 Mac OSX Lion。附加说明:对于大多数 pg 库,EnterpriseDB 安装程序将静态 (.a) 和动态 (.dylib) 版本都放在 /Library/PostgreSQL/9.3/lib 中,但对于 @987654331 @ 只安装了一个动态版本。)
【问题讨论】:
-
github.com/PostgresApp/PostgresApp/issues/83 中建议的解决方法有效;即将环境变量DYLD_LIBRARY_PATH设置为/Library/PostgreSQL/9.3/lib。不过,我希望有一个更有吸引力的解决方案。
标签: ruby macos postgresql gem