Install pg gem on CentOS 6
Asked Answered
U

7

9

I'm trying to setup my VPS (CentOS 6.4) with ruby on rails and postgres.

I installed ruby (2.1.0p0), rails (4.1.0), and postgresql (9.3.4) with no problem.

When I try create new rails app (rails new new_app -d postgresql) it stops when installing the pg gem. I've looked into all SO posts about this error and tried pretty much everything I could find. The most suggested was to run "yum install postgresql-devel" and still didn't work.

Below you can find the ssh output and the mkmf.log. Let me know if need more information...


Output

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

/home/deploy/.rvm/rubies/ruby-2.1.0/bin/ruby extconf.rb
checking for pg_config... yes
Using config values from /usr/bin/pg_config
checking for libpq-fe.h... *** 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}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/home/deploy/.rvm/rubies/ruby-2.1.0/bin/ruby
    --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}/lib
/home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:456:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
    from /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:587:in `try_cpp'
    from /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:1120:in `block in find_header'
    from /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:918:in `block in checking_for'
    from /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:351:in `block (2 levels) in postpone'
    from /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:321:in `open'
    from /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:351:in `block in postpone'
    from /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:321:in `open'
    from /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:347:in `postpone'
    from /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:917:in `checking_for'
    from /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:1119:in `find_header'
    from extconf.rb:48:in `'

extconf failed, exit code 1


mkmf.log

"gcc -o conftest -I/home/deploy/.rvm/rubies/ruby-2.1.0/include/ruby-2.1.0/x86_64-linux -I/home/deploy/.rvm/rubies/ruby-2.1.0/include/ruby-2.1.0/ruby/backward -I/home/deploy/.rvm/rubies/ruby-2.1.0/include/ruby-2.1.0 -I. -I/usr/include     -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration  -fPIC conftest.c  -L. -L/home/deploy/.rvm/rubies/ruby-2.1.0/lib -Wl,-R/home/deploy/.rvm/rubies/ruby-2.1.0/lib -L/usr/lib64 -Wl,-R/usr/lib64 -L. -fstack-protector -rdynamic -Wl,-export-dynamic     -Wl,-rpath,'/../lib' -Wl,-R -Wl,'/../lib' -L'/../lib' -lruby  -lpthread -lrt -ldl -lcrypt -lm   -lc"
gcc: error trying to exec 'as': execvp: Permission denied
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: int main(int argc, char **argv)
4: {
5:   return 0;
6: }
/* end */

Unbeliever answered 25/4, 2014 at 20:3 Comment(0)
S
13

Before:

For Centos 6: Right install Postgres 9.* with this guide.

After:

yum install postgresql-libs postgresql-devel

Helpful instruction:

How to setup RoR with Postgres

Spangle answered 22/5, 2014 at 21:15 Comment(0)
S
7

As you are not using the outdated PostgreSQL version that comes with CentOS 6 (PostgreSQL 8.4), you need to install the -devel package matching your version (PostgreSQL 9.X).

The easiest way is to use the official PostgreSQL yum repository.

As the latest version is 9.5 and it is compatible with all 9.X versions I will write the instructions for that one. In the future you can refer to the official instructions for the updated commands.

yum install http://yum.postgresql.org/9.5/redhat/rhel-7-x86_64/pgdg-redhat95-9.5-2.noarch.rpm
yum install postgresql95-devel

Then install the gem with the -with-pg-config option:

gem install pg -- --with-pg-config=/usr/pgsql-9.5/bin/pg_config
Sholeen answered 5/3, 2015 at 21:24 Comment(0)
A
6

This was easier for me:

ln -s /usr/pgsql-9.5/bin/pg_config /usr/local/bin/
Allhallows answered 22/4, 2016 at 12:8 Comment(2)
This is much easier then specifying in each bundle. However you must remember to update this on major postgresql version changes (9.*.*)Mohamedmohammad
This won't work with PostgreSQL 9.X because CentOS 6 comes with PostgreSQL 8.4Sholeen
U
0

Try something like this;

before "bundle:install" do
  run "ls -l #{fetch(:latest_release)}/Gemfile"
  #run "bundle config  --local --gemfile=#{fetch(:latest_release)}/Gemfile build.pg --with-pg-config=/usr/pgsql-9.1/bin/pg_config"
  run "cd #{fetch(:latest_release)} && bundle config build.pg --with-pg-config=/usr/pgsql-9.3/bin/pg_config"
end
Underpinnings answered 4/8, 2014 at 15:14 Comment(1)
Where are you supposed to try that?Sholeen
A
0

You could try installing the pg gem with the postres pg_config file path option:

gem install pg -- --with-pg-config=/usr/pgsql-9.2/bin/pg_config

Please update the path according to your system

Regards

Amino answered 6/8, 2014 at 19:5 Comment(0)
P
0

I had this problem on my mac and it was a bash / RVM issue. I had to add this to my bash: [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm” . Given that it's finding the config file I would look into this.

Peba answered 8/8, 2014 at 21:1 Comment(0)
B
0

For AWS EC2 (Amazon Linux) users:

# This 3 lines are used to `gem install pg ...` successfully
yum install ruby-devel
yum groupinstall "Development Tools"
yum install postgresql-devel # After you run this, you will have a `/usr/bin/pg_config` to be used
gem install pg -v '1.5.6' -- --with-pg-config=/usr/bin/pg_config
Bleat answered 16/4 at 6:30 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.