5

我在 OS X (10.8.3) 上使用Postgres.app 。我已经修改了我PATH的,以便bin应用程序的文件夹在所有其他文件夹之前。

Rammy:~ phrogz$ which pg_config
/Applications/Postgres.app/Contents/MacOS/bin/pg_config

我已经安装了 rvm 并且可以毫无错误地安装 pg gem,但是当我去要求它时,我得到一个错误:

Rammy:~ phrogz$ gem -v
1.8.25

Rammy:~ phrogz$ gem install pg
Fetching: pg-0.15.1.gem (100%)
Building native extensions.  This could take a while...
Successfully installed pg-0.15.1
1 gem installed

Rammy:~ phrogz$ ruby -v -e "require 'pg'"
ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-darwin12.3.0]
/Users/phrogz/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': dlopen(/Users/phrogz/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.15.1/lib/pg_ext.bundle, 9): Library not loaded: @executable_path/../lib/libssl.1.0.0.dylib (LoadError)
  Referenced from: /Applications/Postgres.app/Contents/MacOS/lib/libpq.dylib
  Reason: image not found - /Users/phrogz/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.15.1/lib/pg_ext.bundle
    from /Users/phrogz/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /Users/phrogz/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.15.1/lib/pg.rb:4:in `<top (required)>'
    from /Users/phrogz/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `require'
    from /Users/phrogz/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `rescue in require'
    from /Users/phrogz/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
    from -e:1:in `<main>'

我需要做什么才能pg正确安装 gem?

4

4 回答 4

4

编辑:尽管这个答案目前的投票数比接受的答案多,但接受的答案要简单得多,也更干净。


安装 gem 时从路径中删除 Postgres.app 二进制文件pg,而是使用 OS X 中内置的 postgres 安装来配置 gem。该pg库稍后仍将正确连接到 Postgres.app 服务器。

Rammy:~ phrogz$ gem uninstall pg
Successfully uninstalled pg-0.15.1

# Modify PATH to remove /Applications/Postgres.app/Contents/MacOS/bin

Rammy:~ phrogz$ gem install pg
Fetching: pg-0.15.1.gem (100%)
Building native extensions.  This could take a while...
Successfully installed pg-0.15.1
1 gem installed

Rammy:~ phrogz$ ruby -v -e "require 'pg'"
ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-darwin12.3.0]
于 2013-05-09T02:41:36.973 回答
3

我找到了一个适合我的解决方案,并且需要最少的黑客/配置。您只需要这样做一次,它将适用于每个捆绑包安装。将以下内容添加到您的 .bash_profile、.bash_rc 或等效文件中:

export DYLD_FALLBACK_LIBRARY_PATH=/Applications/Postgres.app/Contents/MacOS/lib:$DYLD_LIBRARY_PATH

(假设您在默认位置安装了 Postgres.app)。然后重新启动您的终端会话并重试。

直接导出到 DYLD_LIBRARY_PATH 可能会导致其他依赖它的应用程序出现严重问题,但使用回退路径可以避免这些问题。

也可以看看:

编辑:当您尝试运行 psql 时,设置 DYLD_FALLBACK_LIBRARY_PATH 似乎会导致错误。要解决此问题,您可以在 .bash_profile 中添加以下两行:

alias psql="(. ~/.bash_profile; unset DYLD_FALLBACK_LIBRARY_PATH; psql)";

这是假设您正在使用 bash 并且您的 .bash_profile 位于您的主目录中。如果不是这种情况(或者如果您使用 .bashrc 或其他环境设置而不是 .bash_profile)~/.bash_profile,请将命令的一部分更改为环境设置脚本的路径。

别名命令基本上会启动一个子shell,它不会影响您当前的 bash 环境。因此,当它取消设置 DYLD_FALLBACK_LIBRARY_PATH 变量时,它只是暂时的。退出 psql 后,将再次设置环境变量,以便 rails 正常运行。

于 2013-05-24T17:30:36.343 回答
1

这对我有用:

sudo env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config

只需仔细检查 /Applications/Postgres93.app.. 路径是否适合您。

于 2015-02-01T11:57:08.163 回答
1

问题在于 gem 与 Postgres.app 的链接。如果您将其链接到 osx 附带的 postgres 版本

这是一个小脚本:

  • 如果将rvm与项目 gemset 一起使用:更改为您的项目
  • 运行以下命令:

    gem uninstall pg
    
    PATH=${PATH/'Postgres.app'/'WRONGFOLDER.app'}
    gem install pg
    PATH=${PATH/'WRONGFOLDER.app'/'Postgres.app'}
    
  • 现在一切都应该没问题

于 2013-05-13T17:30:51.350 回答