title: Why can't the pg gem be installed in AWS Elastic Beanstalk?
body: <p>I am deploying a simple application to AWS Elastic Beanstalk. However, the moment I put <code>gem 'pg'</code> in the <code>Gemfile</code> and push these to Elastic Beanstalk. I get the following errors in my logs:</p>
  
  <pre><code>-------------------------------------
  /var/log/eb-tools.log
  -------------------------------------
  Installing actionpack (4.0.1) 
  Installing mime-types (1.25) 
  Installing polyglot (0.3.3) 
  Installing treetop (1.4.15) 
  Installing mail (2.5.4) 
  Installing actionmailer (4.0.1) 
  Installing activemodel (4.0.1) 
  Installing activerecord-deprecated_finders (1.0.3) 
  Installing arel (4.0.1) 
  Installing activerecord (4.0.1) 
  Installing coffee-script-source (1.6.3) 
  Installing execjs (2.0.2) 
  Installing coffee-script (2.2.0) 
  Installing thor (0.18.1) 
  Installing railties (4.0.1) 
  Installing coffee-rails (4.0.1) 
  Installing hike (1.2.3) 
  Installing jbuilder (1.5.2) 
  Installing jquery-rails (3.0.4) 
  Using json (1.8.1) 
  Installing pg (0.17.0) 
  Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
  
          /usr/bin/ruby1.9 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
      --without-opt-dir
      --with-opt-include
      --without-opt-include=${opt-dir}/include
      --with-opt-lib
      --without-opt-lib=${opt-dir}/
      --with-make-prog
      --without-make-prog
      --srcdir=.
      --curdir
      --ruby=/usr/bin/ruby1.9
      --with-pg
      --without-pg
      --with-pg-config
      --without-pg-config
      --with-pg_config
      --without-pg_config
      --with-pg-dir
      --without-pg-dir
      --with-pg-include
      --without-pg-include=${pg-dir}/include
      --with-pg-lib
      --without-pg-lib=${pg-dir}/
  
  
  Gem files will remain installed in /usr/share/ruby/1.9/gems/1.9.1/gems/pg-0.17.0 for inspection.
  Results logged to /usr/share/ruby/1.9/gems/1.9.1/gems/pg-0.17.0/ext/gem_make.out
  An error occurred while installing pg (0.17.0), and Bundler cannot continue.
  Make sure that `gem install pg -v '0.17.0'` succeeds before bundling.
  ERROR: bundle install failed!
  
  2013-11-17 14:10:03,371 [ERROR] (8302 MainThread) [directoryHooksExecutor.py-34] [root directoryHooksExecutor error] Script failed with returncode 1
  2013-11-17 14:10:03,499 [INFO] (8269 MainThread) [command.py-130] [root command execute] Command returned: (code: 1, stdout: Error occurred during build: Command hooks failed
  , stderr: None)
  ....
  </code></pre>
  
  <p>I get no errors locally.</p>
  
  <p>Quite some time ago, I remember encountering this problem on my other Ubuntu boxes. Apparently, one needs to install additional libraries via <code>sudo apt-get install ruby-dev build-essential</code> or <code>sudo apt-get install postgresql-client libpq5 libpq-dev</code>. I would give it a shot, but On AWS Elastic Beanstalk, I am not so sure how to do this.</p>