Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why can't the pg gem be installed in AWS Elastic Beanstalk?

I am deploying a simple application to AWS Elastic Beanstalk. However, the moment I put gem 'pg' in the Gemfile and push these to Elastic Beanstalk. I get the following errors in my logs:

-------------------------------------
/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)
....

I get no errors locally.

Quite some time ago, I remember encountering this problem on my other Ubuntu boxes. Apparently, one needs to install additional libraries via sudo apt-get install ruby-dev build-essential or sudo apt-get install postgresql-client libpq5 libpq-dev. I would give it a shot, but On AWS Elastic Beanstalk, I am not so sure how to do this.

like image 229
Christian Fazzini Avatar asked Nov 17 '13 14:11

Christian Fazzini


People also ask

Which AWS services can be used with Elastic Beanstalk?

Elastic Beanstalk uses core AWS services such as Amazon Elastic Compute Cloud (EC2), Amazon Elastic Container Service (ECS), AWS Auto Scaling, and Elastic Load Balancing (ELB) to easily support applications that need to scale to serve millions of users.

Is Elastic Beanstalk outdated?

Release: Elastic Beanstalk Amazon Linux AMI platforms are deprecated on July 8, 2021. This release announces the deprecation of AWS Elastic Beanstalk platforms based on Amazon Linux AMI (aka AL1). Final retirement date is set to June 30, 2022.


2 Answers

In .ebextensions/packages.config:

packages:
  yum:
    postgresql-devel: []

This will ensure any new instances will have this lib installed

like image 109
Christian Fazzini Avatar answered Sep 18 '22 16:09

Christian Fazzini


add

packages:
  yum:
    postgresql93-devel: []
like image 34
Alexander Paramonov Avatar answered Sep 18 '22 16:09

Alexander Paramonov