Ruby 在带有postgres.app的rvm下要求pg时出错
我在OSX(10.8.3)上使用。我已修改了我的Ruby 在带有postgres.app的rvm下要求pg时出错,ruby,postgresql,rvm,pg,Ruby,Postgresql,Rvm,Pg,我在OSX(10.8.3)上使用。我已修改了我的路径,以便应用程序的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 Fetc
路径
,以便应用程序的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>'
Rammy:~phrogz$gem-v
1.8.25
拉米:~phrogz$gem安装页面
取数:pg-0.15.1.gem(100%)
构建本机扩展。这可能需要一段时间。。。
已成功安装pg-0.15.1
已安装1个gem
拉米:~phrogz$ruby-v-e“需要‘pg’”
ruby 1.9.3p392(2013-02-22修订版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):库未加载:@executable_-path/./lib/lib/libssl.1.0.0.0.dylib(LoadError)
引用自:/Applications/Postgres.app/Contents/MacOS/lib/libpq.dylib
原因:找不到映像-/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\u ruby/1.9.1/rubygems/custom\u 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`'
from/Users/phrogz/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site\u ruby/1.9.1/rubygems/custom\u require.rb:60:in'require'
来自/Users/phrogz/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site\u ruby/1.9.1/rubygems/custom\u require.rb:60:“在require中救援”
from/Users/phrogz/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site\u ruby/1.9.1/rubygems/custom\u require.rb:35:in'require'
from-e:1:in`'
我需要做什么才能正确安装
pg
gem?Edit:尽管这个答案目前的投票数比公认的答案多,但公认的答案要简单得多,也要干净得多
安装
pg
gem时,请从路径中删除Postgres.app二进制文件,并使用OS X内置的Postgres安装来配置gem。稍后,pg
库仍将正确连接到Postgres.app服务器
Rammy:~phrogz$gem卸载pg
已成功卸载pg-0.15.1
#修改路径以删除/Applications/Postgres.app/Contents/MacOS/bin
拉米:~phrogz$gem安装页面
取数:pg-0.15.1.gem(100%)
构建本机扩展。这可能需要一段时间。。。
已成功安装pg-0.15.1
已安装1个gem
拉米:~phrogz$ruby-v-e“需要‘pg’”
ruby 1.9.3p392(2013-02-22修订版39386)[x86_64-darwin12.3.0]
问题在于gem与Postgres.app的链接。
如果您将其链接到osx附带的postgres版本
下面是一个小脚本:
- 如果将rvm与项目宝石一起使用:更改为您的项目
- 运行以下命令:
gem uninstall pg PATH=${PATH/'Postgres.app'/'WRONGFOLDER.app'} gem install pg PATH=${PATH/'WRONGFOLDER.app'/'Postgres.app'}
- 现在一切都好了
export DYLD_FALLBACK_LIBRARY_PATH=/Applications/Postgres.app/Contents/MacOS/lib:$DYLD_LIBRARY_PATH
(假设您在默认位置安装了Postgres.app)。然后重新启动终端会话并重试
直接导出到DYLD_LIBRARY_路径可能会导致依赖它的其他应用程序出现严重问题,但使用回退路径可以避免这些问题
另见:
alias psql="(. ~/.bash_profile; unset DYLD_FALLBACK_LIBRARY_PATH; psql)";
这是假设您正在使用bash,并且.bash_配置文件位于您的主目录中。如果不是这样(或者如果您使用的是.bashrc或其他环境设置而不是.bash\u配置文件),请将命令的~/.bash\u配置文件
部分更改为环境设置脚本的路径
别名命令基本上启动一个子shell,它不会影响当前的bash环境。因此,当它取消设置DYLD_FALLBACK_LIBRARY_PATH变量时,它只是临时的。退出psql后,将再次设置环境变量,以便rails正常工作。这对我来说很有效:
sudo env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
只需再次检查/Applications/Postgres93.app。。这条路是为你而存在的。哇,谢谢你,这真的帮了我一臂之力。你能不能多说一点为什么它会起作用,这样我就能更好地理解引擎盖下发生了什么?很好。这显然是正确的做法。谢谢分享。