【问题标题】:Installing pg gem on ubuntu在 ubuntu 上安装 pg gem
【发布时间】:2012-12-07 19:26:01
【问题描述】:

我正在使用 sqlite3 开发一个 Rails 应用程序。我想把它推到 Heroku。在 Heroku 教程中,它说我必须先更改:

gem 'sqlite3'

gem 'pg'

然后运行

bundle install

我收到了这个错误:

 Installing pg (0.14.1) with native extensions 
 Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
 ...
 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.
 ...

接下来我尝试了here提出的解决方案:

 running gem install pg -- --with-pg-config= /usr/bin/pg_config

我也试过跑步:

 sudo apt-get install postgresql
 sudo apt-get install libpq-dev

 gem install pg

工作正常..

但是

 bundle install

仍然给我同样的错误

注意:我使用的是 rvm

【问题讨论】:

  • 我认为我使用 rvm 的事实在某种程度上使事情变得复杂,因此 SO 上的解决方案都不起作用......

标签: ruby-on-rails heroku gem bundle


【解决方案1】:

你试过了吗

group :development, :test do
  gem 'sqlite3'
end

group :production do
  gem 'pg'
end

在您的 gemfile 中,以便您可以在开发中使用 sqlite,当您将其推送到 heroku 作为生产时,它将是 pg。

【讨论】:

  • 是的,试过这个。然后'捆绑安装'..仍然得到同样的错误
  • @shane:您指定了--without 选项吗?例如,bundle install --without=production?
  • 我做到了。这样,“捆绑安装”进展顺利,但是当我想将其推送到 heroku 时……我仍然得到:将 Gemfile.lock 更新为版本控制。您已添加到 Gemfile:* pg 您已从 Gemfile 中删除:* sqlite3
【解决方案2】:

将您的 gemfile 更改为以下内容:

gem 'sqlite3', :group => :development
gem 'pg', :group => :production

这样您将在开发中使用本地 SQL。 Heroku 将忽略 sqlite gem,而使用 Postgres。

【讨论】:

  • 这是一种方法。但是它并没有解决无法在本地安装postgresql的问题。如果他们愿意,用户应该能够这样做。
  • 你说得对,但我不认为这是他的要求。 “我正在使用 sqlite3 开发一个 Rails 应用程序。我想将它推送到 Heroku。”使用 sql 开发并使用 pg 推送到 heroku 是常见的做法。 Heroku 将开发工作转移到 postgres 的说明可以忽略。
  • 当然,我只是想确保 OP 知道其中的区别(=
猜你喜欢
  • 2013-01-06
  • 2011-03-08
  • 2012-11-20
  • 2015-04-06
  • 1970-01-01
  • 2014-06-11
  • 2016-03-27
相关资源
最近更新 更多