我对ruby/gem管理和postgres libpq有问题
我已经从RVM切换到rbenv,现在使用chruby。我确保RVM和rbenv已完全卸载。我正在使用ruby 2.2.5。我在安装捆绑包时遇到问题: 安装带有本机扩展的第0.18.4页我对ruby/gem管理和postgres libpq有问题,ruby,postgresql,ruby-on-rails-4,bundler,pg,Ruby,Postgresql,Ruby On Rails 4,Bundler,Pg,我已经从RVM切换到rbenv,现在使用chruby。我确保RVM和rbenv已完全卸载。我正在使用ruby 2.2.5。我在安装捆绑包时遇到问题: 安装带有本机扩展的第0.18.4页 Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby ex
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb
checking for pg_config... yes
Using config values from /usr/local/bin/pg_config
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for pg_config_manual.h... yes
checking for PQconnectdb() in -lpq... no
checking for PQconnectdb() in -llibpq... no
checking for PQconnectdb() in -lms/libpq... no
Can't find the PostgreSQL client library (libpq)
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
我有一个关于如何管理我的红宝石的问题。我注意到bundler正在系统文件(Ruby.framework/Versions/2.0)中查找gems,但我使用的是Ruby 2.2.5。我还注意到gem文件安装在ruby/2.2.5/ruby/2.0.0/gems--(请参阅下面的代码)中--
这是我的宝石环境:
ruby 2.2.5p319 (2016-04-26 revision 54774) [x86_64-darwin14]
~/w/Rafftopia ❯❯❯ gem env
RubyGems Environment:
- RUBYGEMS VERSION: 2.4.5.1
- RUBY VERSION: 2.2.5 (2016-04-26 patchlevel 319) [x86_64-darwin14]
- INSTALLATION DIRECTORY: /Users/phillipjones/.gem/ruby/2.2.5
- RUBY EXECUTABLE: /Users/phillipjones/.rubies/ruby-2.2.5/bin/ruby
- EXECUTABLE DIRECTORY: /Users/phillipjones/.gem/ruby/2.2.5/bin
- SPEC CACHE DIRECTORY: /Users/phillipjones/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /Users/phillipjones/.rubies/ruby-2.2.5/etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-14
- GEM PATHS:
- /Users/phillipjones/.gem/ruby/2.2.5
- /Users/phillipjones/.rubies/ruby-2.2.5/lib/ruby/gems/2.2.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /Users/phillipjones/.gem/ruby/2.2.5/bin
- /Users/phillipjones/.rubies/ruby-2.2.5/lib/ruby/gems/2.2.0/bin
- /Users/phillipjones/.rubies/ruby-2.2.5/bin
- /usr/local/bin
- /usr/local/sbin
- /usr/bin
- /bin
- /usr/sbin
- /sbin
我尝试了许多建议来解决这个问题,但都无济于事。任何帮助都将不胜感激 pggem包含一个Ruby解释器的扩展,用C编写。安装gem时,该扩展是用系统上安装的C编译器编译的。当您启动应用程序并连接到PostgreSQL server时,此扩展将作为Ruby的一部分加载和执行 但是,扩展需要编译PostgeSQL库和C头文件。Bundler找不到它们,也无法编译扩展 您需要告诉Bundler在哪里可以找到用于编译
pg
扩展的库。它可以从pg_config
程序中获取此信息,因此您需要告诉它在哪里可以找到pg_config
。假设您运行的是最新的PostgreSQL版本:
bundle config build.pg -- --with-pgconfig=/usr/local/Cellar/postgresql/9.5.3/bin/pg_config
运行此命令,然后再次执行捆绑安装。它应该会起作用
当您使用任何Ruby版本管理器时,您不应该再从
Ruby.framework/Versions/2.0
使用系统Ruby。Ruby版本管理器应该这样做:当您运行Ruby
时,您正在运行您选择的自定义版本。pggem包含一个Ruby解释器的扩展,用C编写。当您安装gem时,该扩展是用系统上安装的C编译器编译的。当您启动应用程序并连接到PostgreSQL server时,此扩展将作为Ruby的一部分加载和执行
但是,扩展需要编译PostgeSQL库和C头文件。Bundler找不到它们,也无法编译扩展
您需要告诉Bundler在哪里可以找到用于编译pg
扩展的库。它可以从pg_config
程序中获取此信息,因此您需要告诉它在哪里可以找到pg_config
。假设您运行的是最新的PostgreSQL版本:
bundle config build.pg -- --with-pgconfig=/usr/local/Cellar/postgresql/9.5.3/bin/pg_config
运行此命令,然后再次执行捆绑安装。它应该会起作用
当您使用任何Ruby版本管理器时,您不应该再从
Ruby.framework/Versions/2.0
使用系统Ruby。Ruby版本管理器应该这样做:当您运行Ruby
时,您运行的是您选择的自定义版本。我的Ruby-v是2.2.1,但当我捆绑安装时,它会显示我的系统Ruby。~/w/raftopia❯❯❯ ruby-v ruby 2.2.1p85(2015-02-26修订版49769)[x86_64-darwin14]~/w/Raftopia❯❯❯ bundle install/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0/rubygems/dependency.rb:296:在“to_specs”中:在总共8个gem中找不到“bundler”(>=0)(gem::LoadError)/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0/rubygems/dependency.rb:307:int这并没有解决我的问题,但感谢您的建议。此消息:在总共8个gem中找不到“bundler”(>=0)
意味着您没有在Ruby 2.2.1目录中安装bundler gem。运行gem-install bundler
即可。我的ruby-v显示为2.2.1,但当我进行bundle-install时,它会显示我的系统ruby。~/w/raftopia❯❯❯ ruby-v ruby 2.2.1p85(2015-02-26修订版49769)[x86_64-darwin14]~/w/Raftopia❯❯❯ bundle install/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0/rubygems/dependency.rb:296:在“to_specs”中:在总共8个gem中找不到“bundler”(>=0)(gem::LoadError)/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0/rubygems/dependency.rb:307:int这并没有解决我的问题,但感谢您的建议。此消息:在总共8个gem中找不到“bundler”(>=0)
意味着您没有在Ruby 2.2.1目录中安装bundler gem。运行gem安装bundler
即可完成此操作。