Bryan Saxon
Bryan Saxon

Reputation: 663

An error occurred while installing pg (0.15.1), and Bundler cannot continue

I am fairly new to ruby and while going through the railstutorial.org, I ran into an issue. When I attempt to bundle install my ruby application with 'bundle install --without production', I get:

Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
Using rake 10.3.2
Using i18n 0.6.11
Using minitest 4.7.5
Using multi_json 1.10.1
Using thread_safe 0.3.4
Using tzinfo 0.3.41
Using activesupport 4.0.8
Using builder 3.1.4
Using erubis 2.7.0
Using rack 1.5.2
Using rack-test 0.6.2
Using actionpack 4.0.8
Using mime-types 1.25.1
Using polyglot 0.3.5
Using treetop 1.4.15
Using mail 2.5.4
Using actionmailer 4.0.8
Using activemodel 4.0.8
Using activerecord-deprecated_finders 1.0.3
Using arel 4.0.2
Using activerecord 4.0.8
Using bundler 1.7.3
Using mini_portile 0.6.0
Using nokogiri 1.6.3.1
Using xpath 2.0.0
Using capybara 2.1.0
Using ffi 1.9.6
Using childprocess 0.5.5
Using coffee-script-source 1.8.0
Using execjs 2.2.1
Using coffee-script 2.3.0
Using thor 0.19.1
Using railties 4.0.8
Using coffee-rails 4.0.1
Using diff-lcs 1.2.5
Using hike 1.2.3
Using jbuilder 1.0.2
Using jquery-rails 3.0.4
Using json 1.8.1

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

/Users/bryansaxon/.rvm/rubies/ruby-2.0.0-p576/bin/ruby extconf.rb 
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
 --with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** 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.

Provided configuration options:
    --with-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/Users/bryansaxon/.rvm/rubies/ruby-2.0.0-p576/bin/ruby
    --with-pg
    --without-pg
    --with-pg-dir
    --without-pg-dir
    --with-pg-include
    --without-pg-include=${pg-dir}/include
    --with-pg-lib
    --without-pg-lib=${pg-dir}/
    --with-pg-config
    --without-pg-config
    --with-pg_config
    --without-pg_config


Gem files will remain installed in /Users/bryansaxon/.rvm/gems/ruby-2.0.0-        
p576@railstutorial_rails_4_0/gems/pg-0.15.1 for inspection.
Results logged to /Users/bryansaxon/.rvm/gems/ruby-2.0.0-p576@railstutorial_rails_4_0/gems/pg- 
0.15.1/ext/gem_make.out
An error occurred while installing pg (0.15.1), and Bundler cannot continue.
Make sure that `gem install pg -v '0.15.1'` succeeds before bundling.

Then when I try to 'gem install pg -v '0.15.1'', I get:

Building native extensions.  This could take a while...
ERROR:  Error installing pg:
    ERROR: Failed to build gem native extension.

/Users/bryansaxon/.rvm/rubies/ruby-2.0.0-p576/bin/ruby extconf.rb
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
 --with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** 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.

Provided configuration options:
    --with-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/Users/bryansaxon/.rvm/rubies/ruby-2.0.0-p576/bin/ruby
    --with-pg
    --without-pg
    --with-pg-dir
    --without-pg-dir
    --with-pg-include
    --without-pg-include=${pg-dir}/include
    --with-pg-lib
    --without-pg-lib=${pg-dir}/
    --with-pg-config
    --without-pg-config
    --with-pg_config
    --without-pg_config


Gem files will remain installed in /Users/bryansaxon/.rvm/gems/ruby-2.0.0-    
p576@railstutorial_rails_4_0/gems/pg-0.15.1 for inspection.
Results logged to /Users/bryansaxon/.rvm/gems/ruby-2.0.0-p576@railstutorial_rails_4_0/gems/pg-
0.15.1/ext/gem_make.out

Then I tried to install 'gem install pg -v '0.15.1' --with-pg_config' and got:

ERROR:  While executing gem ... (OptionParser::InvalidOption)
    invalid option: --with-pg_config

Now I am stuck and not sure how to fix the issue. Have tried numerous methods through other posts outlying the same issue but nothing seems to work. Any help would be much appreciated! I am on a Mac running Yosemite.

Here is my Gemfile:

source 'https://rubygems.org'
ruby '2.0.0'
#ruby-gemset=railstutorial_rails_4_0

gem 'rails', '4.0.8'
gem 'pg', '0.15.1'

group :development, :test do
  gem 'rspec-rails', '2.13.1'
end

group :test do
  gem 'selenium-webdriver', '2.35.1'
  gem 'capybara', '2.1.0'
end

gem 'sass-rails', '4.0.3'
gem 'uglifier', '2.1.1'
gem 'coffee-rails', '4.0.1'
gem 'jquery-rails', '3.0.4'
gem 'turbolinks', '1.1.1'
gem 'jbuilder', '1.0.2'

group :doc do
  gem 'sdoc', '0.3.20', require: false
end

group :production do
  gem 'rails_12factor', '0.0.2'
end

Upvotes: 2

Views: 4333

Answers (3)

Sean
Sean

Reputation: 271

Another workaround would be:

sudo apt install postgresql-contrib libpq-dev

By installing this dependency, you'll be able to bundle your application. PostgreSQL should be installed on the machine as well. If you haven't done so:

apt update

apt full-upgrade

apt install postgresql postgresql-client

PostgreSQL won't run properly if your firewall prohibits access on port 5432.

apt install ufw

If you're remote... Allow 22 so you don't get logged out.

ufw allow 22

ufw allow 5432

ufw enable

Upvotes: 0

Try to use '>=0.15.1' instead of '0.15.1'.

Upvotes: 0

Alexander
Alexander

Reputation: 2558

Since gem 'pg', '0.15.1' is not in group :production, bundler try ti install it even if you run it with --without production option. Thus, you have 2 options:

  • install postgresql first and use it in development
  • move gem "pg" to production group, and use different database in development. For example - gem "sqlite3"

Upvotes: 1

Related Questions